docs: add .gitignore fix and initial-plan.md
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,4 +1,5 @@
|
||||
.DS_Store
|
||||
.env
|
||||
.aws/sso/cache/
|
||||
.aws/cli/cache/
|
||||
scripts/
|
||||
76
initial-plan.md
Normal file
76
initial-plan.md
Normal file
@@ -0,0 +1,76 @@
|
||||
/* ngn-agent
|
||||
opinionated platform engineering agent
|
||||
1. multi-project management via sessions. sessions are isolated, durable and resumable.
|
||||
2. gateway via telegram
|
||||
3. work parallel with git worktree
|
||||
4. self-improving skills -> long term memory, auto skills (hermes?)
|
||||
5. self-researching, learn facts, self-documenting (read-only from infra always allowed) -> long term memory, auto skills
|
||||
6. reporting via jira, confluence, gateway (telegram, teams)
|
||||
7. minimal deps, repeatable setup
|
||||
*/
|
||||
|
||||
// Main skill: Platform Dev Workflows
|
||||
// Entrypoint
|
||||
|
||||
---
|
||||
// session loads workspace
|
||||
struct workspace {
|
||||
git_repos = [] // git repos associated with this workspace
|
||||
jira = [] // jira tickets
|
||||
documentation = [] // confluence url or files under a repo url
|
||||
}
|
||||
|
||||
|
||||
// sesion has it's own worktree, work in diff branch
|
||||
func session() -> session {
|
||||
if first_chat {
|
||||
if prev_sessions = previous_similar_session_exists? {
|
||||
print("similar session found for this task, load/continue?")
|
||||
print(prev_sessions)
|
||||
if (load) {
|
||||
return; // do nothing, user will resume previous sessions ide
|
||||
}
|
||||
}
|
||||
}
|
||||
// start new session
|
||||
wkspc = new_workspace(DEFAULT_REPOS)
|
||||
// create a new jira ticket for this session
|
||||
wkspc.jira = create_jira?()
|
||||
// load documentation?
|
||||
wkspc.documentation = load_documentation?()
|
||||
|
||||
// regular AI code/agent sessions
|
||||
// checkpoint everytime mutate change
|
||||
// create branch, create PR, invoke tool calls (aws, terraform, kubectl; all read only are approved)
|
||||
// aws sso login is permitted
|
||||
// memory read/write if anything needs to be saved in long-term memory
|
||||
|
||||
// update documents and jira for milestone and progress
|
||||
update_documentation()
|
||||
add_jira_comment()
|
||||
|
||||
}
|
||||
|
||||
func daily_report() {
|
||||
for s in all_sessions() {
|
||||
if updated_past_day(s) {
|
||||
add_jira_comment()
|
||||
update_jira?()
|
||||
summary_today = summary_today + updated_past_day(s, gen_summary=true)
|
||||
}
|
||||
if is_stale(s) {
|
||||
stale_reminder = stale_reminder + summarize(s)
|
||||
}
|
||||
}
|
||||
send_via_gateway(summary_today)
|
||||
send_via_gateway(stale_reminder)
|
||||
}
|
||||
|
||||
func daily_cleanup() {
|
||||
for s in all_sessions() {
|
||||
if inactive(s) || s.last_updated > 30d {
|
||||
// write to db as archived, not resumable, only history are viewable
|
||||
archive(s)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user