@lazyingart/agintiflow 0.20.25 → 0.20.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -4
- package/docs/agent-runtime-pipe.md +5 -4
- package/docs/cli-i18n.md +1 -1
- package/docs/project-agent-lessons.md +1 -1
- package/docs/real-deepseek-capabilities.md +1 -1
- package/docs/self-development-supervision.md +1 -2
- package/docs/skills-and-tools.md +1 -1
- package/docs/supervised-capability-curriculum.md +111 -0
- package/package.json +9 -3
- package/public/app.js +4 -0
- package/references/backend-frontend-artifact-tunnel.md +3 -3
- package/references/general-task-capability-taxonomy.md +109 -0
- package/references/supervision-student-recursive-training.md +116 -0
- package/scripts/smoke-auto-update.js +51 -0
- package/scripts/smoke-auxiliary-tools.js +1 -0
- package/scripts/smoke-canvas-artifacts.js +67 -0
- package/scripts/smoke-capabilities.js +51 -2
- package/scripts/smoke-cli-chat.js +2 -0
- package/scripts/smoke-coding-tools.js +41 -0
- package/scripts/smoke-inbox.js +40 -1
- package/scripts/smoke-skills.js +53 -1
- package/scripts/smoke-toolchain-docker.js +1 -0
- package/scripts/smoke-web-api.js +6 -1
- package/skills/android/SKILL.md +2 -1
- package/skills/code-review/SKILL.md +24 -0
- package/skills/data-analysis/SKILL.md +29 -0
- package/skills/database/SKILL.md +27 -0
- package/skills/devops-deployment/SKILL.md +29 -0
- package/skills/docs-knowledge/SKILL.md +28 -0
- package/skills/dotnet-csharp/SKILL.md +24 -0
- package/skills/education-tutorial/SKILL.md +26 -0
- package/skills/go/SKILL.md +23 -0
- package/skills/ios-swift/SKILL.md +26 -0
- package/skills/java-jvm/SKILL.md +25 -0
- package/skills/php/SKILL.md +24 -0
- package/skills/presentation-slides/SKILL.md +26 -0
- package/skills/qa-testing/SKILL.md +27 -0
- package/skills/ruby/SKILL.md +24 -0
- package/skills/rust/SKILL.md +23 -0
- package/skills/security-review/SKILL.md +28 -0
- package/skills/supervision-student/SKILL.md +67 -0
- package/skills/writing-editing/SKILL.md +28 -0
- package/src/agent-runner.js +49 -7
- package/src/artifact-tunnel.js +75 -4
- package/src/auto-update.js +252 -0
- package/src/capabilities.js +6 -1
- package/src/cli.js +129 -14
- package/src/config.js +6 -2
- package/src/engineering-guidance.js +12 -2
- package/src/interactive-cli.js +42 -5
- package/src/model-client.js +2 -2
- package/src/model-routing.js +3 -1
- package/src/parallel-scouts.js +17 -1
- package/src/project.js +200 -20
- package/src/session-index.js +135 -0
- package/src/session-store.js +67 -3
- package/src/skill-library.js +16 -2
- package/src/sqlite.js +19 -0
- package/src/static-preview-server.js +8 -1
- package/src/task-profiles.js +318 -5
- package/src/web-db.js +58 -6
- package/src/workspace-tools.js +1 -0
- package/web.js +37 -11
package/README.md
CHANGED
|
@@ -50,6 +50,8 @@ aginti --list-profiles
|
|
|
50
50
|
aginti --sandbox-status
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
+
When AgInTiFlow is installed globally from npm, normal `aginti`, `aginti chat`, `aginti resume`, and `aginti web` startup checks npm for a newer `@lazyingart/agintiflow` release at a throttled interval. If a newer version is found, it runs `npm install -g @lazyingart/agintiflow@latest` and restarts the CLI once. Source checkouts and non-TTY automation skip this behavior. Force a check with `aginti update`, skip one run with `--no-auto-update`, or disable it with `AGINTIFLOW_NO_AUTO_UPDATE=1`.
|
|
54
|
+
|
|
53
55
|
On first interactive use, if no main model key is detected, `aginti` opens an auth wizard. Use Up/Down to choose DeepSeek, OpenAI, Qwen, or Venice, paste the key, and press Enter to save it to the project-local ignored file `.aginti/.env` with `0600` permissions. The wizard points to DeepSeek keys at `https://platform.deepseek.com/api_keys`, OpenAI keys at `https://platform.openai.com/api-keys`, and Venice at `https://venice.ai`. It then offers the optional auxiliary image key; press Esc to skip. You can rerun it even when keys already exist:
|
|
54
56
|
|
|
55
57
|
```bash
|
|
@@ -117,7 +119,7 @@ aginti web --port 3210
|
|
|
117
119
|
# then open http://127.0.0.1:3210
|
|
118
120
|
```
|
|
119
121
|
|
|
120
|
-
`aginti web` uses the folder it is launched from as the project root
|
|
122
|
+
`aginti web` uses the folder it is launched from as the project root and default working directory. CLI and web runs share project-local pointers in `.aginti-sessions/`, while canonical session history and artifacts live under `~/.agintiflow/sessions/<session-id>/`.
|
|
121
123
|
|
|
122
124
|
Run the installed CLI without a live provider key by using the local mock route:
|
|
123
125
|
|
|
@@ -132,8 +134,11 @@ aginti keys status
|
|
|
132
134
|
printf '%s' "$DEEPSEEK_API_KEY" | aginti keys set deepseek --stdin
|
|
133
135
|
aginti capabilities
|
|
134
136
|
aginti doctor --capabilities
|
|
137
|
+
aginti update
|
|
135
138
|
aginti sessions list
|
|
136
139
|
aginti sessions show <session-id>
|
|
140
|
+
aginti sessions rename <session-id> "friendly title"
|
|
141
|
+
aginti storage migrate
|
|
137
142
|
aginti resume
|
|
138
143
|
aginti resume latest
|
|
139
144
|
aginti resume <session-id> "continue with a short follow-up"
|
|
@@ -194,7 +199,7 @@ aginti capabilities --json
|
|
|
194
199
|
aginti doctor --capabilities
|
|
195
200
|
```
|
|
196
201
|
|
|
197
|
-
The report checks the project root, command cwd, shared `.sessions
|
|
202
|
+
The report checks the project root, command cwd, shared `.aginti-sessions/` project index, global `~/.agintiflow/sessions/` store, provider-key presence, DeepSeek routes, guarded file and shell tools, OS/platform hints, Docker status, wrappers, task profiles, TeX, Node/npm, Python, R, conda, and maintenance command policy. It never prints API key or token values.
|
|
198
203
|
|
|
199
204
|
Live DeepSeek verification is opt-in because it spends provider credits:
|
|
200
205
|
|
|
@@ -409,7 +414,7 @@ Package policy values:
|
|
|
409
414
|
|
|
410
415
|
Toolchain commands such as `python3 plot.py`, `latexmk -pdf paper.tex`, and `pdflatex -interaction=nonstopmode -halt-on-error paper.tex` are allowlisted only when the shell tool is enabled. In Docker mode the project folder is mounted as `/workspace`; any file written to `/workspace/report.pdf` appears on the host as `<your-project>/report.pdf`. CLI runs print both the host workspace and the Docker mapping before execution. File and canvas tools accept both normal relative paths and Docker virtual paths like `/workspace/report.pdf`, while other absolute host paths remain blocked.
|
|
411
416
|
|
|
412
|
-
The web chat mirrors the CLI session store while keeping browser-native controls. Launch `aginti web` from the same project folder and it reads the same `.sessions/` history as `aginti` and `aginti resume`. In the web UI, Enter sends and Shift+Enter adds a newline. `Pipe to run` writes an ASAP message (`→`) to
|
|
417
|
+
The web chat mirrors the CLI session store while keeping browser-native controls. Launch `aginti web` from the same project folder and it reads the same `.aginti-sessions/` pointers and `~/.agintiflow/sessions/` history as `aginti` and `aginti resume`. In the web UI, Enter sends and Shift+Enter adds a newline. `Pipe to run` writes an ASAP message (`→`) to `~/.agintiflow/sessions/<session-id>/inbox.jsonl` so an active CLI or web agent can consume it at the next safe boundary. `Queue after finish` stores a browser-local next prompt (`↳`) and starts it after the current web run finishes; queued items have Edit and Remove buttons. Esc or Stop stops active web runs. Generated local sites should use the built-in `preview_workspace` or `open_workspace_file` tools; AgInTiFlow avoids transient localhost servers inside Docker because those containers stop between commands and their ports are not host-published.
|
|
413
418
|
|
|
414
419
|
Safe preflight endpoints:
|
|
415
420
|
|
|
@@ -435,7 +440,7 @@ The smoke script starts the web server on a random localhost port, checks `/api/
|
|
|
435
440
|
|
|
436
441
|
## Runtime Artifacts
|
|
437
442
|
|
|
438
|
-
Each run stores state under `.sessions/<session-id
|
|
443
|
+
Each run stores canonical state under `~/.agintiflow/sessions/<session-id>/`. The project folder keeps `.aginti-sessions/<session-id>/session.json` as a lightweight pointer plus `.aginti-sessions/web-state.sqlite` for web UI preferences and friendly session titles. Legacy `.sessions/` folders are read and copied by `aginti storage migrate`.
|
|
439
444
|
|
|
440
445
|
| File | Purpose |
|
|
441
446
|
| --- | --- |
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
# Agent Runtime Pipe
|
|
2
2
|
|
|
3
|
-
AgInTiFlow keeps CLI and web runs equivalent by using
|
|
3
|
+
AgInTiFlow keeps CLI and web runs equivalent by using a project-local session index plus a global canonical session store.
|
|
4
4
|
|
|
5
5
|
- Project root: the folder where `aginti` or `aginti web` is launched.
|
|
6
|
-
-
|
|
7
|
-
- Web settings database: `<project>/.sessions/web-state.sqlite`.
|
|
8
|
-
-
|
|
6
|
+
- Project session index: `<project>/.aginti-sessions/`.
|
|
7
|
+
- Web settings database: `<project>/.aginti-sessions/web-state.sqlite`.
|
|
8
|
+
- Canonical session store: `~/.agintiflow/sessions/<session-id>/`.
|
|
9
|
+
- Runtime inbox: `~/.agintiflow/sessions/<session-id>/inbox.jsonl`.
|
|
9
10
|
|
|
10
11
|
When a run is active, the web chat and `aginti queue <session-id> "..."` append messages to the inbox instead of trying to mutate the running process directly. The web API exposes `GET /api/sessions/:id/inbox`, `POST /api/sessions/:id/inbox`, `PATCH /api/sessions/:id/inbox/:itemId`, and `DELETE /api/sessions/:id/inbox/:itemId` so browser users can inspect, edit, or remove pending pipe messages before the runner consumes them. The runner drains the inbox at safe boundaries: before each model step and after tool execution. This mirrors the event-queue style used by mature agent UIs while keeping the backend decoupled from any specific frontend.
|
|
11
12
|
|
package/docs/cli-i18n.md
CHANGED
|
@@ -75,7 +75,7 @@ The web app already has an 11-language dropdown. Launching web with a language s
|
|
|
75
75
|
aginti web --language de --port 3210
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
-
The web preference is stored in the project-local `.sessions/web-state.sqlite` database, so the CLI and web app can share sessions while each frontend keeps its own UI controls.
|
|
78
|
+
The web preference is stored in the project-local `.aginti-sessions/web-state.sqlite` database, so the CLI and web app can share sessions while each frontend keeps its own UI controls.
|
|
79
79
|
|
|
80
80
|
## Notes
|
|
81
81
|
|
|
@@ -35,7 +35,7 @@ Round 8 distilled implementation lessons from local agent projects and applied t
|
|
|
35
35
|
## Applied In AgInTiFlow
|
|
36
36
|
|
|
37
37
|
- `aginti web` now defaults command execution to the folder it was launched from.
|
|
38
|
-
- CLI and web share `.sessions/`
|
|
38
|
+
- CLI and web share `.aginti-sessions/` project pointers and `~/.agintiflow/sessions/` canonical history.
|
|
39
39
|
- `aginti init`, `aginti doctor`, `aginti keys`, `aginti sessions`, and `aginti resume` provide basic project lifecycle control.
|
|
40
40
|
- Task profiles wire lightweight skill prompts into CLI/web runs while keeping the LLM responsible for the main plan.
|
|
41
41
|
- Project-local `.aginti/.env` can store provider keys safely with 0600 permissions and ignored git entries.
|
|
@@ -19,7 +19,7 @@ aginti capabilities --json
|
|
|
19
19
|
aginti doctor --capabilities
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
The report checks project root, command cwd,
|
|
22
|
+
The report checks project root, command cwd, project-local `.aginti-sessions/`, global `~/.agintiflow/sessions/`, provider-key presence, DeepSeek routes, file/shell tools, Docker status, wrappers, task profiles, TeX, Node/npm, Python, R, conda, and maintenance command guardrails.
|
|
23
23
|
|
|
24
24
|
## Live DeepSeek Suite
|
|
25
25
|
|
|
@@ -32,7 +32,7 @@ aginti --profile large-codebase --parallel-scouts --scout-count 5 \
|
|
|
32
32
|
"inspect this repo, implement the requested change, run focused checks, and stop before commit"
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
Use `aginti web --port 3221` from the same folder if a browser UI is preferred. CLI and web will share `.sessions
|
|
35
|
+
Use `aginti web --port 3221` from the same folder if a browser UI is preferred. CLI and web will share `.aginti-sessions/` project pointers and `~/.agintiflow/sessions/` canonical history.
|
|
36
36
|
|
|
37
37
|
## Supervisor Duties
|
|
38
38
|
|
|
@@ -92,4 +92,3 @@ npm test
|
|
|
92
92
|
npm run pack:dry-run
|
|
93
93
|
git diff --check
|
|
94
94
|
```
|
|
95
|
-
|
package/docs/skills-and-tools.md
CHANGED
|
@@ -12,7 +12,7 @@ AgInTiFlow separates **skills** from **tools** so the agent can stay general whi
|
|
|
12
12
|
|
|
13
13
|
## Built-In Skills
|
|
14
14
|
|
|
15
|
-
The package ships built-in skills for code engineering, website/app building, LaTeX manuscripts, books, Microsoft Word documents, image generation, GitHub maintenance, system maintenance, tmux session control, Android, R/Stan, Python, C/C++, shell scripting, AAPS, and
|
|
15
|
+
The package ships built-in skills for code engineering, website/app building, LaTeX manuscripts, books, Microsoft Word documents, image generation, GitHub maintenance, system maintenance, tmux session control, Android, R/Stan, Python, C/C++, shell scripting, AAPS, novel writing, and supervision/student-agent training.
|
|
16
16
|
|
|
17
17
|
List them from a project:
|
|
18
18
|
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# Supervised Capability Curriculum
|
|
2
|
+
|
|
3
|
+
AgInTiFlow should be trained and verified by supervising real tasks, not by trusting the agent's final summary. Each curriculum run uses a clean project under `~/ProjectsLFS/Aginti-Test/`, runs AgInTiFlow through a persistent tmux session, and verifies artifacts from outside the agent.
|
|
4
|
+
|
|
5
|
+
## Verification Contract
|
|
6
|
+
|
|
7
|
+
Every supervised task must end with independent checks:
|
|
8
|
+
|
|
9
|
+
- Inspect `git status --short`.
|
|
10
|
+
- Verify output files exist with `test -s`, `ls -lh`, `file`, or a domain-specific checker.
|
|
11
|
+
- Read `~/.agintiflow/sessions/<session-id>/events.jsonl` for actual tool calls when claims matter.
|
|
12
|
+
- For screenshots, PDFs, images, APKs, reports, and archives, keep a durable workspace path unless the user explicitly requested only a temporary preview.
|
|
13
|
+
- Commit intentional project changes or explicitly report why the worktree is not clean.
|
|
14
|
+
|
|
15
|
+
## Task Families
|
|
16
|
+
|
|
17
|
+
| Profile | Example supervised task | Required evidence |
|
|
18
|
+
| --- | --- | --- |
|
|
19
|
+
| `auto` | Mixed request: inspect a messy folder, infer the purpose, write a report, run checks | Correct profile inference, durable files, useful checks, clean git status |
|
|
20
|
+
| `code` | Add a CLI feature with tests | Patch diff, focused test output, git status |
|
|
21
|
+
| `large-codebase` | Fix a cross-file bug in a generated multi-package repo | Codebase map, targeted reads, focused then broader checks |
|
|
22
|
+
| `qa` | Build or repair a realistic testing project | focused check output, useful regression coverage, clean runnable test suite |
|
|
23
|
+
| `database` | Fix a schema/query/migration bug in a local SQLite app | migration/query evidence, no data-loss ambiguity |
|
|
24
|
+
| `devops` | Diagnose a broken Docker/service/CI setup without sudo | read-only evidence, idempotent fix, health/log check |
|
|
25
|
+
| `security` | Review a small app for auth, path, secret, or shell risks | findings, patch or report, no secret leakage |
|
|
26
|
+
| `data` | Clean messy CSV/JSON data and generate a report | raw preserved, cleaned output, validation script |
|
|
27
|
+
| `docs` | Write source-backed README/API/tutorial docs | source reads, docs files, verified commands/examples |
|
|
28
|
+
| `app` | Build a small usable app from scratch | Real app files, build/preview/install check, durable screenshot or demo |
|
|
29
|
+
| `website` | Build a polished landing page or dashboard | Preview works, screenshots/artifacts saved, responsive layout |
|
|
30
|
+
| `node` | Build/test a Node or TypeScript package | package manager detected, script/test output |
|
|
31
|
+
| `python` | Write a package/script/notebook-style analysis | Python check/test, output artifact if generated |
|
|
32
|
+
| `c-cpp` | Build a small CMake/Make project and fix a compiler error | Compiler output, binary/test result |
|
|
33
|
+
| `r-stan` | Run a reproducible R/Stan/statistics analysis | Rscript/CmdStan evidence, saved plot/report |
|
|
34
|
+
| `android` | Build, install, launch, screenshot an Android app | Gradle build/test, adb install/launch, durable screenshot |
|
|
35
|
+
| `ios` | Build/test a SwiftUI or SwiftPM app/library | swift/xcodebuild evidence or signing/Xcode blocker, durable screenshot if simulator exists |
|
|
36
|
+
| `java` | Repair a Maven/Gradle Java service or library | wrapper/build files inspected, compile/test output |
|
|
37
|
+
| `go` | Fix a Go module with CLI/server tests | gofmt, focused `go test`, binary or smoke output |
|
|
38
|
+
| `rust` | Fix a Cargo crate/workspace bug | cargo fmt/check/test evidence |
|
|
39
|
+
| `dotnet` | Repair a .NET/C# app or library | dotnet restore/build/test evidence |
|
|
40
|
+
| `php` | Fix a Composer/Laravel-style app | php lint/test or framework command output |
|
|
41
|
+
| `ruby` | Fix a Ruby/Rails/gem project | bundle/rake/rspec evidence |
|
|
42
|
+
| `latex` | Write and compile a paper/report | `.tex` source, PDF, compile log/pass evidence |
|
|
43
|
+
| `paper` | Draft a research manuscript with sources and figures | Outline/source notes, manuscript file, figure/PDF when available |
|
|
44
|
+
| `research` | Research a current technical topic | Source list, dated notes, clear evidence/inference split |
|
|
45
|
+
| `writing` | Write a structured article/script | Durable draft file, outline/revision notes |
|
|
46
|
+
| `book` | Plan and draft a chapter | Chapter map, chapter file, continuity notes |
|
|
47
|
+
| `novel` | Draft a scene/chapter with character continuity | Story bible or continuity notes, chapter file |
|
|
48
|
+
| `design` | Produce an engineering/product design doc | Options/tradeoffs, decision, verification criteria |
|
|
49
|
+
| `slides` | Create a pitch deck, lecture deck, or poster | outline, slide source, exported/previewable artifact |
|
|
50
|
+
| `education` | Create lesson materials with exercises and answers | learner objective, examples, exercise checks |
|
|
51
|
+
| `image` | Generate an image with GRS AI or Venice | Manifest, generated image path, canvas preview |
|
|
52
|
+
| `word` | Create/convert/edit a `.docx` style document | Input backup, output file, converter/tool evidence |
|
|
53
|
+
| `github` | Commit/push/open PR or fix CI | status/diff first, gh/git output, conflict handling |
|
|
54
|
+
| `shell` | Write and run a maintenance script | read-only diagnosis first, script syntax/check output |
|
|
55
|
+
| `maintenance` | Diagnose/fix an environment/toolchain/system issue | evidence log, reversible commands, no silent host mutation |
|
|
56
|
+
| `aaps` | Work with AAPS project conventions | `.aaps`/project files inspected, assumptions documented |
|
|
57
|
+
|
|
58
|
+
## Supervision Loop
|
|
59
|
+
|
|
60
|
+
1. Start or reuse a named tmux session in the supervised project.
|
|
61
|
+
2. Give AgInTiFlow a normal user-level task, not a full implementation recipe.
|
|
62
|
+
3. Poll the pane and session events until it finishes, blocks, or loops.
|
|
63
|
+
4. If a reusable capability is missing, patch AgInTiFlow itself: profile, skill, tool, policy, prompt, UI, docs, or tests.
|
|
64
|
+
5. Publish/install the updated AgInTiFlow build when possible, resume the same session, and ask it to continue.
|
|
65
|
+
6. Record the result, missing capability, fix, and verification evidence.
|
|
66
|
+
|
|
67
|
+
## Workspace Layout
|
|
68
|
+
|
|
69
|
+
Future supervised homework should live under `~/ProjectsLFS/Aginti-Test/`:
|
|
70
|
+
|
|
71
|
+
```text
|
|
72
|
+
~/ProjectsLFS/Aginti-Test/
|
|
73
|
+
HOMEWORK.md
|
|
74
|
+
TASK-Profile-Auto/
|
|
75
|
+
TASK-Profile-Code/
|
|
76
|
+
TASK-Profile-Large-Codebase/
|
|
77
|
+
TASK-Profile-App/
|
|
78
|
+
TASK-Profile-Website/
|
|
79
|
+
TASK-Profile-Paper/
|
|
80
|
+
TASK-Profile-Research/
|
|
81
|
+
TASK-Profile-Supervision/
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Durable example records should be copied into the AgInTiFlow repo under `aginti-work-examples/`.
|
|
85
|
+
|
|
86
|
+
## Recursive Supervision
|
|
87
|
+
|
|
88
|
+
The `supervision` profile and `supervision-student` skill are for training AgInTiFlow to be a better supervisor, not only a better worker. In recursive supervision:
|
|
89
|
+
|
|
90
|
+
1. A student AgInTiFlow session performs a real task.
|
|
91
|
+
2. A supervisor AgInTiFlow session monitors the student, verifies artifacts, and records flaws.
|
|
92
|
+
3. Codex supervises the supervisor, checking whether it used evidence rather than belief.
|
|
93
|
+
4. Repeated misses become AgInTiFlow upgrades.
|
|
94
|
+
|
|
95
|
+
Use this only with explicit workspace boundaries and clear permission mode. The supervisor may request code/tool/profile improvements, but should not silently mutate unrelated projects.
|
|
96
|
+
|
|
97
|
+
## Current Lesson From Android Supervision
|
|
98
|
+
|
|
99
|
+
Canvas preview alone is not proof that an artifact was saved. AgInTiFlow now persists canvas file paths into session artifacts and its Android workflow asks for durable screenshot paths. Supervisors must still verify the workspace file or session artifact exists before reporting success.
|
|
100
|
+
|
|
101
|
+
## Current Lesson From Auto Supervision
|
|
102
|
+
|
|
103
|
+
For vague daily tasks, `auto` must borrow specialized habits without being told. The Pocket Greenhouse homework exposed two quality gates: generated output must be inspected and polished, not merely described, and final hygiene claims must use stack-specific recursive checks. AgInTiFlow now explicitly asks the model to fix obvious duplicates/noisy rows/stale summaries and to check Python transient files recursively before claiming none exist.
|
|
104
|
+
|
|
105
|
+
## Current Lesson From Code Supervision
|
|
106
|
+
|
|
107
|
+
The Pocket Ledger homework exposed that an explicit `code` profile should not be treated as a cheap short-turn route when the prompt asks to repair a repo and leave it clean. AgInTiFlow now routes `code` work to the complex model by default, gives it a larger cleanup budget, and tells it to prioritize functional checks when optional lint expands scope. The run also exposed that one-shot CLI defaults were overriding `SANDBOX_MODE=host`; env sandbox defaults are now covered by smoke tests.
|
|
108
|
+
|
|
109
|
+
## Current Lesson From Large-Codebase Supervision
|
|
110
|
+
|
|
111
|
+
The Checkout Workspace homework proved the large-codebase profile can repair cross-package failures from a vague prompt, but the first tmux run exposed launch fragility: an old tmux environment selected an inaccessible OpenAI model even though the intended route was DeepSeek. AgInTiFlow now has explicit language/platform profiles and a supervised homework seeder, and CLI defaults respect profile/model-role environment variables more consistently. Supervisors should still verify provider/model at launch before sending the project prompt.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lazyingart/agintiflow",
|
|
3
|
-
"version": "0.20.
|
|
3
|
+
"version": "0.20.38",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "AgInTiFlow is a web-first coding agent and CLI with DeepSeek routing, sandboxed tools, model providers, canvas artifacts, and optional wrappers.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -49,9 +49,11 @@
|
|
|
49
49
|
"scripts/real-deepseek-capabilities.js",
|
|
50
50
|
"scripts/smoke-auxiliary-tools.js",
|
|
51
51
|
"scripts/smoke-auth.js",
|
|
52
|
+
"scripts/smoke-canvas-artifacts.js",
|
|
52
53
|
"scripts/smoke-cli-chat.js",
|
|
53
54
|
"scripts/smoke-coding-tools.js",
|
|
54
55
|
"scripts/smoke-capabilities.js",
|
|
56
|
+
"scripts/smoke-auto-update.js",
|
|
55
57
|
"scripts/smoke-inbox.js",
|
|
56
58
|
"scripts/smoke-model-roles.js",
|
|
57
59
|
"scripts/smoke-platform.js",
|
|
@@ -71,11 +73,12 @@
|
|
|
71
73
|
"scripts": {
|
|
72
74
|
"start": "node run.js",
|
|
73
75
|
"web": "node web.js",
|
|
74
|
-
"check": "node --check run.js && node --check web.js && node --check bin/aginti-cli.js && node --check src/*.js",
|
|
76
|
+
"check": "node --check run.js && node --check web.js && node --check bin/aginti-cli.js && node --check src/*.js && node --check scripts/seed-supervised-homework.js",
|
|
75
77
|
"setup:toolchain-docker": "scripts/setup-agent-toolchain-docker.sh",
|
|
76
78
|
"smoke:coding-tools": "node scripts/smoke-coding-tools.js",
|
|
77
79
|
"smoke:auxiliary-tools": "node scripts/smoke-auxiliary-tools.js",
|
|
78
80
|
"smoke:auth": "node scripts/smoke-auth.js",
|
|
81
|
+
"smoke:canvas-artifacts": "node scripts/smoke-canvas-artifacts.js",
|
|
79
82
|
"smoke:cli-chat": "node scripts/smoke-cli-chat.js",
|
|
80
83
|
"smoke:skills": "node scripts/smoke-skills.js",
|
|
81
84
|
"smoke:toolchain-docker": "node scripts/smoke-toolchain-docker.js",
|
|
@@ -84,8 +87,11 @@
|
|
|
84
87
|
"smoke:platform": "node scripts/smoke-platform.js",
|
|
85
88
|
"smoke:tmux-tools": "node scripts/smoke-tmux-tools.js",
|
|
86
89
|
"smoke:web-api": "node scripts/smoke-web-api.js",
|
|
90
|
+
"smoke:autoupdate": "node scripts/smoke-auto-update.js",
|
|
87
91
|
"real:deepseek": "node scripts/real-deepseek-capabilities.js",
|
|
88
|
-
"
|
|
92
|
+
"supervision:seed": "node scripts/seed-supervised-homework.js",
|
|
93
|
+
"storage:migrate": "node bin/aginti-cli.js storage migrate",
|
|
94
|
+
"test": "npm run check && npm run smoke:autoupdate && npm run smoke:web-api && npm run smoke:coding-tools && npm run smoke:auxiliary-tools && npm run smoke:auth && npm run smoke:canvas-artifacts && npm run smoke:capabilities && npm run smoke:model-roles && npm run smoke:platform && npm run smoke:skills && npm run smoke:tmux-tools && npm run smoke:cli-chat && npm run smoke:inbox",
|
|
89
95
|
"pack:dry-run": "npm pack --dry-run",
|
|
90
96
|
"smoke:capabilities": "node scripts/smoke-capabilities.js"
|
|
91
97
|
},
|
package/public/app.js
CHANGED
|
@@ -848,7 +848,11 @@ const COMPLEX_ENGINEERING_HINT = /\b(large|complex|complicated|monorepo|codebase
|
|
|
848
848
|
|
|
849
849
|
function recommendedMaxStepsForProfile(profile = "auto", goal = "") {
|
|
850
850
|
if (profile === "large-codebase") return 36;
|
|
851
|
+
if (profile === "app") return 40;
|
|
852
|
+
if (profile === "android") return 60;
|
|
853
|
+
if (profile === "supervision") return 40;
|
|
851
854
|
if (profile === "latex") return 30;
|
|
855
|
+
if (["paper", "research", "book", "novel", "c-cpp", "r-stan", "github", "word", "maintenance"].includes(profile)) return 30;
|
|
852
856
|
if (COMPLEX_ENGINEERING_HINT.test(goal || "")) return 36;
|
|
853
857
|
if (/\b(latex|tex|pdflatex|latexmk|pdf|website|app|docker|system|install|setup|debug)\b/i.test(goal || "")) return 30;
|
|
854
858
|
return 24;
|
|
@@ -9,13 +9,13 @@ The chat stream is good for conversation, but it is not enough for agent work th
|
|
|
9
9
|
- Backend agents can optionally call `send_to_canvas` for important outputs.
|
|
10
10
|
- Runtime events automatically expose screenshots, snapshots, file changes, and final answers.
|
|
11
11
|
- The frontend can show unread artifact counts, lists, previews, and manual selection.
|
|
12
|
-
- Users can open selected image/text artifacts without digging through
|
|
12
|
+
- Users can open selected image/text artifacts without digging through `~/.agintiflow/sessions/`.
|
|
13
13
|
|
|
14
14
|
The tunnel is optional. Agents can still answer normally with `finish`; they should use `send_to_canvas` only when an output benefits from visual focus or file-style inspection.
|
|
15
15
|
|
|
16
16
|
## Source Of Truth
|
|
17
17
|
|
|
18
|
-
Session events are the durable backend contract. The tunnel is derived from
|
|
18
|
+
Session events are the durable backend contract. The tunnel is derived from `~/.agintiflow/sessions/<session-id>/events.jsonl` rather than a separate artifact database.
|
|
19
19
|
|
|
20
20
|
Relevant events:
|
|
21
21
|
|
|
@@ -165,7 +165,7 @@ The tunnel must never become a secret/file exfiltration path.
|
|
|
165
165
|
Current safeguards:
|
|
166
166
|
|
|
167
167
|
- Artifact list response exposes display paths, not absolute filesystem paths.
|
|
168
|
-
- Session files must stay inside the owning
|
|
168
|
+
- Session files must stay inside the owning `~/.agintiflow/sessions/<session-id>/` directory.
|
|
169
169
|
- Workspace file reads reuse `checkWorkspaceToolUse("read_file", ...)`.
|
|
170
170
|
- `.env`, `.npmrc`, keys, secret-like paths, `.git`, huge files, and binary text reads are blocked.
|
|
171
171
|
- Text content is redacted through `redactSensitiveText`.
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# General Task Capability Taxonomy
|
|
2
|
+
|
|
3
|
+
AgInTiFlow should be useful as a daily local agent, not only as a coding demo.
|
|
4
|
+
The UI should expose a manageable set of major profiles while the skill library
|
|
5
|
+
and Auto routing cover detailed task families.
|
|
6
|
+
|
|
7
|
+
## Profile Philosophy
|
|
8
|
+
|
|
9
|
+
- `auto` is the daily default. It should infer the task family and borrow the
|
|
10
|
+
right profile and skill habits without forcing the user to select one.
|
|
11
|
+
- Profiles are bias, not restrictions. A `writing` run may still inspect files,
|
|
12
|
+
run scripts, or use web search; a `code` run may still update docs.
|
|
13
|
+
- Skills are markdown operating procedures selected by trigger words and task
|
|
14
|
+
profile. They are more granular than profiles and should cover common daily
|
|
15
|
+
subtasks.
|
|
16
|
+
- Supervision is a meta-skill. It improves the agent, but it does not replace
|
|
17
|
+
domain skills for writing, coding, design, data, system work, and research.
|
|
18
|
+
|
|
19
|
+
## Major Profiles
|
|
20
|
+
|
|
21
|
+
| Profile | Daily task families covered | Quality gates |
|
|
22
|
+
| --- | --- | --- |
|
|
23
|
+
| `auto` | Mixed requests, vague folder cleanup, small shell/file tasks, inferred profile work | infer correctly, create durable output, run a useful check, final git/artifact state |
|
|
24
|
+
| `code` | features, bug fixes, refactors, packages, scripts, APIs | pro route by default, inspect/search/read first, patch minimal files, focused tests, cleanup/gitingore artifacts, residual risk |
|
|
25
|
+
| `large-codebase` | cross-file bugs, architecture changes, migrations, multi-package repos | context pack, symbol search, narrow-to-broad checks, no unrelated edits |
|
|
26
|
+
| `qa` | failing tests, CI, flaky tests, coverage, regression harnesses | reproduce failure, identify root cause, add regression, rerun focused checks |
|
|
27
|
+
| `database` | SQL, schema, migrations, seed data, persistence bugs | inspect schema/migrations, avoid data loss, reversible migration, query checks |
|
|
28
|
+
| `devops` | Docker, CI/CD, deployment, services, ports, logs, runtime config | read-only diagnosis first, idempotent setup, no silent sudo, health/log proof |
|
|
29
|
+
| `security` | auth, secrets, input validation, dependency risk, shell safety | no secret leakage, prioritize real exploitability, scanner plus review evidence |
|
|
30
|
+
| `data` | CSV/JSON cleanup, ETL, plots, reports, notebooks, reproducible analysis | preserve raw data, validate rows/schema, rerun script, save clean artifacts |
|
|
31
|
+
| `research` | current-source research, literature notes, technical comparisons | cite sources, separate evidence from inference, save dated notes |
|
|
32
|
+
| `paper` | academic manuscripts, abstracts, figures, related work | outline claims, sources traceable, compile/check when possible |
|
|
33
|
+
| `latex` | TeX reports, equations, figures, bibliography, PDF compile | use existing TeX first, compile enough passes, save PDF/source |
|
|
34
|
+
| `writing` | articles, blog posts, scripts, copy, markdown, editing | durable draft, outline, revision notes, voice/tone preserved |
|
|
35
|
+
| `book` | chapter maps, long-form structure, continuity | chapter files, style/continuity notes, revision plan |
|
|
36
|
+
| `novel` | fiction scenes, character arcs, worldbuilding | story bible, scene files, continuity checks |
|
|
37
|
+
| `docs` | README, API docs, tutorials, changelog, knowledge base | source-backed docs, runnable examples, link/command checks |
|
|
38
|
+
| `slides` | pitch decks, lectures, posters, slide outlines | audience fit, concise slide structure, source/export when possible |
|
|
39
|
+
| `education` | tutorials, courses, lessons, exercises, quizzes | learner level, objectives, examples, exercises and answers |
|
|
40
|
+
| `design` | product specs, engineering designs, architecture decisions | goals, constraints, tradeoffs, decision record, verification criteria |
|
|
41
|
+
| `website` | landing pages, dashboards, static sites, frontends | intentional visual design, responsive preview, screenshots/artifacts |
|
|
42
|
+
| `app` | web/desktop/mobile/local apps, full-stack prototypes | coherent architecture, build/preview/install check, durable demo |
|
|
43
|
+
| `android` | Android Gradle/Kotlin/Java apps, emulator/device checks | SDK/adb inspection, build/test/install/launch/screenshot |
|
|
44
|
+
| `ios` | iOS, Swift, SwiftUI, Xcode, SPM, simulator work | Xcode/SPM inspection, build/test/simulator evidence or signing blocker |
|
|
45
|
+
| `python` | Python packages, scripts, analysis, CLIs | pyproject/requirements, focused checks, cache hygiene |
|
|
46
|
+
| `node` | JS/TS packages, React/Vite/Next/Express, CLIs | package manager detection, scripts/tests, lockfile discipline |
|
|
47
|
+
| `java` | Java/Kotlin JVM, Maven, Gradle, Spring, JUnit | wrapper/build file inspection, compile/test evidence, no global JDK mutation |
|
|
48
|
+
| `go` | Go modules, CLIs, servers, packages | go.mod inspection, gofmt, focused `go test` |
|
|
49
|
+
| `rust` | Rust crates, Cargo workspaces, CLIs, services | Cargo metadata, fmt/check/test, dependency discipline |
|
|
50
|
+
| `dotnet` | .NET/C#/ASP.NET projects | .sln/.csproj inspection, restore/build/test evidence |
|
|
51
|
+
| `php` | PHP, Composer, Laravel/Symfony, WordPress-style work | composer/framework inspection, php lint/test evidence |
|
|
52
|
+
| `ruby` | Ruby, Rails, Bundler, gems, RSpec/Minitest | Gemfile/routes/migrations inspection, bundle test evidence |
|
|
53
|
+
| `c-cpp` | C/C++/CMake/Make, native debugging | out-of-tree builds, compiler/test output, sanitizer if available |
|
|
54
|
+
| `r-stan` | R, Stan, statistics, reproducible reports | project-local libs, Rscript/CmdStan checks, plots/reports |
|
|
55
|
+
| `word` | docx editing/conversion, Office workflows | preserve originals, converter evidence, verify output exists |
|
|
56
|
+
| `image` | raster images, covers, posters, illustration assets | prompt quality, manifest, durable image path, canvas preview |
|
|
57
|
+
| `github` | status, branches, pull, merge, rebase, commit, push, gh PRs | status/diff first, fast-forward preference, stop on conflicts/divergence |
|
|
58
|
+
| `shell` | shell scripts, diagnostics, automation | read-only diagnosis, bash syntax/check, reversible scripts |
|
|
59
|
+
| `maintenance` | system/software install, env repair, package/toolchain issues | safe mode awareness, no sudo hangs, manual command on permission blockers |
|
|
60
|
+
| `aaps` | AAPS project conventions and automation files | inspect .aaps conventions, document assumptions, avoid secrets |
|
|
61
|
+
| `supervision` | monitor another agent/session, recursive training | external evidence, flaw taxonomy, durable AgInTiFlow upgrades |
|
|
62
|
+
|
|
63
|
+
## Skill Coverage Targets
|
|
64
|
+
|
|
65
|
+
| Skill | Why it exists |
|
|
66
|
+
| --- | --- |
|
|
67
|
+
| `code` | baseline inspect-patch-test loop |
|
|
68
|
+
| `code-review` | review mindset without accidental edits |
|
|
69
|
+
| `qa-testing` | failure reproduction and regression discipline |
|
|
70
|
+
| `data-analysis` | reproducible data and report artifacts |
|
|
71
|
+
| `docs-knowledge` | source-backed docs instead of invented docs |
|
|
72
|
+
| `database` | schema/migration/data-loss guardrails |
|
|
73
|
+
| `devops-deployment` | runtime and setup work without unsafe host mutation |
|
|
74
|
+
| `security-review` | secret hygiene and real-risk prioritization |
|
|
75
|
+
| `presentation-slides` | deck/poster structure and export habits |
|
|
76
|
+
| `writing-editing` | long-form and editing workflows |
|
|
77
|
+
| `education-tutorial` | lesson/exercise structure |
|
|
78
|
+
| Domain skills | Android, iOS/Swift, Java/JVM, Go, Rust, .NET/C#, PHP, Ruby, LaTeX, Word, R/Stan, C/C++, website, image, AAPS, GitHub, shell, tmux, supervision |
|
|
79
|
+
|
|
80
|
+
## Supervised Homework Strategy
|
|
81
|
+
|
|
82
|
+
Run one hard homework per major family under `~/ProjectsLFS/Aginti-Test/`.
|
|
83
|
+
Each task should use realistic, imperfect user prompts so Auto and profile
|
|
84
|
+
skills must infer the right workflow.
|
|
85
|
+
|
|
86
|
+
1. Seed a project with realistic files, mistakes, and ambiguity.
|
|
87
|
+
2. Start AgInTiFlow in a persistent tmux session from the task folder.
|
|
88
|
+
3. Give a normal prompt, not a full solution recipe.
|
|
89
|
+
4. Monitor pane output and `~/.agintiflow/sessions/<id>/events.jsonl`.
|
|
90
|
+
5. Verify results externally: files, command output, git, screenshots, PDFs,
|
|
91
|
+
plots, docs, app launches, or PR metadata.
|
|
92
|
+
6. If it fails, patch AgInTiFlow's profile, skill, tool, policy, UI, or tests.
|
|
93
|
+
7. Resume the same student session and let AgInTiFlow finish.
|
|
94
|
+
8. Record the example under `aginti-work-examples/`.
|
|
95
|
+
|
|
96
|
+
## Next Homework Queue
|
|
97
|
+
|
|
98
|
+
| Order | Folder | Profile focus | Stress prompt |
|
|
99
|
+
| --- | --- | --- | --- |
|
|
100
|
+
| 1 | `TASK-Profile-Code` | `auto` + `code` + `qa` | "this repo has some bugs; make it good and leave it clean" |
|
|
101
|
+
| 2 | `TASK-Profile-Large-Codebase` | `large-codebase` | "a feature broke across packages; find and fix it" |
|
|
102
|
+
| 3 | `TASK-Profile-Github` | `github` | "pull latest, commit my work, and push if safe" |
|
|
103
|
+
| 4 | `TASK-Profile-Data` | `data` | "these CSVs are messy; produce useful analysis and a report" |
|
|
104
|
+
| 5 | `TASK-Profile-Docs` | `docs` | "make the docs useful for a new user" |
|
|
105
|
+
| 6 | `TASK-Profile-Website` | `website` + `design` | "make a beautiful website from this rough idea" |
|
|
106
|
+
| 7 | `TASK-Profile-Paper` | `paper` + `latex` | "write a short manuscript with a figure and PDF" |
|
|
107
|
+
| 8 | `TASK-Profile-Maintenance` | `maintenance` + `devops` + `shell` | "this tool won't run; diagnose and fix safely" |
|
|
108
|
+
| 9 | `TASK-Profile-Security` | `security` | "review this small app for risky mistakes" |
|
|
109
|
+
| 10 | `TASK-Profile-Writing` | `writing` + `word` + `slides` | "turn these notes into polished deliverables" |
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Supervision Student Recursive Training
|
|
2
|
+
|
|
3
|
+
AgInTiFlow should improve through supervised real work. The core pattern is:
|
|
4
|
+
|
|
5
|
+
1. A student AgInTiFlow session attempts a concrete project.
|
|
6
|
+
2. A supervisor watches it like a demanding user, not like an implementer.
|
|
7
|
+
3. The supervisor verifies outcomes from filesystem, git, tests, devices, screenshots, logs, and session events.
|
|
8
|
+
4. Failures become durable improvements to AgInTiFlow itself.
|
|
9
|
+
5. The same session resumes and tries again.
|
|
10
|
+
|
|
11
|
+
This pattern is useful because a young agent may not yet be a strong worker, but it can still learn to become a strong supervisor. A good supervisor can decompose quality, detect false completion, and force evidence-driven iteration.
|
|
12
|
+
|
|
13
|
+
## Folder Layout
|
|
14
|
+
|
|
15
|
+
Use one organized root for future profile training:
|
|
16
|
+
|
|
17
|
+
```text
|
|
18
|
+
~/ProjectsLFS/Aginti-Test/
|
|
19
|
+
HOMEWORK.md
|
|
20
|
+
TASK-Profile-Auto/
|
|
21
|
+
TASK-Profile-Code/
|
|
22
|
+
TASK-Profile-Large-Codebase/
|
|
23
|
+
TASK-Profile-App/
|
|
24
|
+
TASK-Profile-Website/
|
|
25
|
+
TASK-Profile-Paper/
|
|
26
|
+
TASK-Profile-Research/
|
|
27
|
+
TASK-Profile-Supervision/
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Use the AgInTiFlow repo for durable example records:
|
|
31
|
+
|
|
32
|
+
```text
|
|
33
|
+
AgInTiFlow/
|
|
34
|
+
aginti-work-examples/
|
|
35
|
+
README.md
|
|
36
|
+
homework-ledger.md
|
|
37
|
+
android-tipsplit/
|
|
38
|
+
tipsplit-screenshot-*.png
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Supervision Contract
|
|
42
|
+
|
|
43
|
+
The supervisor must not report success from the student's final answer alone.
|
|
44
|
+
|
|
45
|
+
Required checks:
|
|
46
|
+
|
|
47
|
+
- Inspect `git status --short`.
|
|
48
|
+
- Check expected files with `test -s`, `ls -lh`, `file`, `rg`, or domain-specific validators.
|
|
49
|
+
- Read relevant `~/.agintiflow/sessions/<session-id>/events.jsonl` entries for tool claims.
|
|
50
|
+
- Verify screenshots/images/PDFs/APKs/reports exist after cleanup.
|
|
51
|
+
- Record whether build/test/install/preview/research-source checks actually ran.
|
|
52
|
+
- Save evidence in the example ledger.
|
|
53
|
+
|
|
54
|
+
## Prompt Style
|
|
55
|
+
|
|
56
|
+
Training prompts should be realistic and sometimes imperfect:
|
|
57
|
+
|
|
58
|
+
- Short: "make a small Android app and install it"
|
|
59
|
+
- Ambiguous: "fix this repo and make it good"
|
|
60
|
+
- Broad: "write a paper-style report with figures"
|
|
61
|
+
- Operational: "pull latest, handle conflicts safely, commit and push"
|
|
62
|
+
|
|
63
|
+
The supervisor should not compensate by giving a full implementation recipe unless the student has already failed and the missing reusable capability is being diagnosed.
|
|
64
|
+
|
|
65
|
+
## Failure Taxonomy
|
|
66
|
+
|
|
67
|
+
When a student fails, classify the flaw before patching:
|
|
68
|
+
|
|
69
|
+
- `planning`: skipped inspection, bad decomposition, wrong acceptance criteria.
|
|
70
|
+
- `context`: read the wrong files, missed instructions, forgot prior state.
|
|
71
|
+
- `tool`: lacked a first-class command/tool or used it incorrectly.
|
|
72
|
+
- `policy`: unsafe command, host mutation, sudo prompt, destructive git behavior.
|
|
73
|
+
- `artifact`: missing output, temp file deleted, wrong save path, no durable proof.
|
|
74
|
+
- `verification`: claimed success without tests, screenshots, logs, or source checks.
|
|
75
|
+
- `UX`: output technically works but is ugly, confusing, or too noisy.
|
|
76
|
+
- `recovery`: looped on same error, did not stop on blocker, did not resume cleanly.
|
|
77
|
+
|
|
78
|
+
## Upgrade Targets
|
|
79
|
+
|
|
80
|
+
Prefer durable upgrades over rescue prompts:
|
|
81
|
+
|
|
82
|
+
- Add task profiles for broad modes.
|
|
83
|
+
- Add skills for repeated domain workflows.
|
|
84
|
+
- Add tools for repeatable operations.
|
|
85
|
+
- Add command-policy guards for unsafe/hanging commands.
|
|
86
|
+
- Add smoke tests for regressions.
|
|
87
|
+
- Improve UI/logging when the user cannot inspect progress.
|
|
88
|
+
- Improve artifact persistence when evidence can disappear.
|
|
89
|
+
|
|
90
|
+
## Recursive Training
|
|
91
|
+
|
|
92
|
+
After worker profiles improve, train the `supervision` profile itself:
|
|
93
|
+
|
|
94
|
+
1. Start a supervisor AgInTiFlow session.
|
|
95
|
+
2. Ask it to supervise a smaller student session on a scoped task.
|
|
96
|
+
3. The outer Codex supervisor checks the AgInTi supervisor, not the student directly.
|
|
97
|
+
4. Grade whether the AgInTi supervisor found flaws, verified evidence, and requested durable improvements.
|
|
98
|
+
5. Patch AgInTiFlow if the supervisor missed important quality gates.
|
|
99
|
+
|
|
100
|
+
This builds toward self-improving behavior without granting blind autonomy.
|
|
101
|
+
|
|
102
|
+
## Current Baseline
|
|
103
|
+
|
|
104
|
+
Completed supervised example:
|
|
105
|
+
|
|
106
|
+
- Android TipSplit app in `/home/lachlan/ProjectsLFS/Android-AgInTi-Test`.
|
|
107
|
+
- Built and tested by AgInTiFlow.
|
|
108
|
+
- Installed and launched on emulator.
|
|
109
|
+
- Screenshot was first lost because it was temporary; AgInTiFlow was patched to persist canvas file artifacts.
|
|
110
|
+
- A durable screenshot was then saved at `screenshots/tipsplit-screenshot-20260503-063332.png`.
|
|
111
|
+
- Auto Pocket Greenhouse task in `/home/lachlan/ProjectsLFS/Aginti-Test/TASK-Profile-Auto`.
|
|
112
|
+
- AgInTiFlow inferred a messy sensor folder, fixed the Python analysis, generated README/REPORT/CSV outputs, committed the result, corrected duplicated risk rows, and removed transient Python caches after supervisor review.
|
|
113
|
+
|
|
114
|
+
Next recommended training run:
|
|
115
|
+
|
|
116
|
+
- `TASK-Profile-Code`: seed a small multi-language repo with misleading names and broken tests. Grade inspect/search/read discipline, patch quality, focused checks, and clean git handling.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
compareSemver,
|
|
4
|
+
isGlobalNpmInstall,
|
|
5
|
+
isNewerVersion,
|
|
6
|
+
maybeAutoUpdate,
|
|
7
|
+
shouldAutoUpdateCommand,
|
|
8
|
+
} from "../src/auto-update.js";
|
|
9
|
+
|
|
10
|
+
function assert(condition, message) {
|
|
11
|
+
if (!condition) throw new Error(message);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const scopedGlobalPath = "/usr/local/lib/node_modules/@lazyingart/agintiflow";
|
|
15
|
+
const windowsGlobalPath = "C:\\Users\\tester\\AppData\\Roaming\\npm\\node_modules\\@lazyingart\\agintiflow";
|
|
16
|
+
|
|
17
|
+
assert(compareSemver("0.20.38", "0.20.37") === 1, "patch version compare failed");
|
|
18
|
+
assert(compareSemver("0.21.0", "0.20.99") === 1, "minor version compare failed");
|
|
19
|
+
assert(compareSemver("1.0.0", "0.99.99") === 1, "major version compare failed");
|
|
20
|
+
assert(compareSemver("0.20.37", "0.20.37") === 0, "equal version compare failed");
|
|
21
|
+
assert(compareSemver("0.20.37", "0.20.38") === -1, "older version compare failed");
|
|
22
|
+
assert(isNewerVersion("0.20.38", "0.20.37"), "newer version predicate failed");
|
|
23
|
+
assert(!isNewerVersion("0.20.37", "0.20.37"), "equal version should not update");
|
|
24
|
+
assert(!isNewerVersion("0.20.36", "0.20.37"), "older latest should not update");
|
|
25
|
+
|
|
26
|
+
assert(isGlobalNpmInstall(scopedGlobalPath), "Unix global npm install path not detected");
|
|
27
|
+
assert(isGlobalNpmInstall(windowsGlobalPath), "Windows global npm install path not detected");
|
|
28
|
+
assert(!isGlobalNpmInstall("/home/user/Projects/AgInTiFlow"), "source checkout should not look globally installed");
|
|
29
|
+
|
|
30
|
+
assert(shouldAutoUpdateCommand([]), "plain interactive start should check updates");
|
|
31
|
+
assert(shouldAutoUpdateCommand(["web"]), "web start should check updates");
|
|
32
|
+
assert(shouldAutoUpdateCommand(["resume", "latest"]), "resume should check updates");
|
|
33
|
+
assert(shouldAutoUpdateCommand(["write", "a", "test"]), "one-shot task should check updates in a TTY");
|
|
34
|
+
assert(!shouldAutoUpdateCommand(["doctor"]), "doctor should skip updates");
|
|
35
|
+
assert(!shouldAutoUpdateCommand(["models"]), "models should skip updates");
|
|
36
|
+
assert(!shouldAutoUpdateCommand(["--version"]), "version should skip updates");
|
|
37
|
+
assert(!shouldAutoUpdateCommand(["task", "--no-auto-update"]), "--no-auto-update should skip updates");
|
|
38
|
+
|
|
39
|
+
const skipped = await maybeAutoUpdate({
|
|
40
|
+
argv: [],
|
|
41
|
+
force: true,
|
|
42
|
+
manual: false,
|
|
43
|
+
packageDir: "/home/user/Projects/AgInTiFlow",
|
|
44
|
+
packageName: "@lazyingart/agintiflow",
|
|
45
|
+
packageVersion: "0.20.37",
|
|
46
|
+
restart: false,
|
|
47
|
+
});
|
|
48
|
+
assert(skipped.skipped === "source-checkout", "source checkout update guard failed");
|
|
49
|
+
|
|
50
|
+
console.log("auto-update smoke ok");
|
|
51
|
+
|
|
@@ -11,6 +11,7 @@ import { SessionStore } from "../src/session-store.js";
|
|
|
11
11
|
|
|
12
12
|
const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
|
|
13
13
|
const tempRoot = await fs.mkdtemp(path.join(os.tmpdir(), "agintiflow-auxiliary-"));
|
|
14
|
+
process.env.AGINTIFLOW_HOME = path.join(tempRoot, ".agintiflow-home");
|
|
14
15
|
const runtimeDir = path.join(tempRoot, "runtime");
|
|
15
16
|
const workspace = path.join(tempRoot, "workspace");
|
|
16
17
|
await fs.mkdir(workspace, { recursive: true });
|