@awak-app/simy-cli 0.1.1 → 0.1.2
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 +45 -4
- package/package.json +16 -3
- package/src/agent.js +713 -41
- package/src/backend-executable.js +44 -0
- package/src/browser.js +59 -0
- package/src/console/app.js +1042 -0
- package/src/console/commands.js +100 -0
- package/src/console/index.js +25 -0
- package/src/index.js +22 -1
- package/src/local-attachments.js +270 -0
- package/src/orchestrator/contract.js +1 -0
- package/src/orchestrator/independent-audit.js +25 -0
- package/src/orchestrator/index.js +1 -1
- package/src/orchestrator/instruction.js +27 -1
- package/src/orchestrator/loop.js +61 -25
- package/src/orchestrator/presentation.js +189 -0
- package/src/orchestrator/result.js +11 -0
- package/src/provider-stream.js +310 -0
- package/src/repository-inventory.js +186 -0
- package/src/run-registry.js +44 -0
- package/src/runner.js +525 -64
- package/src/web-api.js +66 -0
- package/src/workspace-context.js +37 -0
package/README.md
CHANGED
|
@@ -7,6 +7,7 @@ npx @awak-app/simy-cli
|
|
|
7
7
|
npm install -g @awak-app/simy-cli
|
|
8
8
|
simy
|
|
9
9
|
simy --daemon
|
|
10
|
+
simy --no-tui
|
|
10
11
|
simy --host https://simy.example.com
|
|
11
12
|
```
|
|
12
13
|
|
|
@@ -16,10 +17,43 @@ must use HTTPS. `SIMY_WEB_ORIGIN` and the legacy `SIMY_API_ORIGIN` remain
|
|
|
16
17
|
available for automation, but the command-line flag takes precedence.
|
|
17
18
|
|
|
18
19
|
The CLI starts a loopback HTTP agent on a random available port, keeps a
|
|
19
|
-
48-hour, origin-scoped local session, and
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
48-hour, origin-scoped local session, and opens a native coding chat. The first
|
|
21
|
+
chat message creates the remote audit ledger and starts the local coding-loop
|
|
22
|
+
state machine; SIMY Web mirrors the lifecycle but is not required as the task
|
|
23
|
+
entry point. The CLI also accepts backend-issued launch challenges for Web-led
|
|
24
|
+
runs. It builds the requirement charter, runs Codex or Claude Code, audits
|
|
25
|
+
structured completion evidence, and re-instructs the executor within the
|
|
26
|
+
configured attempt budget.
|
|
27
|
+
|
|
28
|
+
## Interactive console
|
|
29
|
+
|
|
30
|
+
Running `simy` in a terminal opens the Coding Loop chat. It discovers the
|
|
31
|
+
current GitHub repository and branch, selects an available executor, and keeps
|
|
32
|
+
the composer active so a natural-language request can start immediately. Each
|
|
33
|
+
run appears in a selectable list with its lifecycle state, process ID, and a
|
|
34
|
+
bounded live transcript. Use `--no-tui` for the foreground HTTP-agent behavior
|
|
35
|
+
or `--daemon` to run without the chat.
|
|
36
|
+
|
|
37
|
+
The console supports these direct controls:
|
|
38
|
+
|
|
39
|
+
- `Up`/`Down` or `j`/`k`: select a run.
|
|
40
|
+
- `i`: enter human guidance. Guidance submitted while a provider process is
|
|
41
|
+
active is queued for the next executor handoff; a waiting run resumes as a
|
|
42
|
+
new attempt in the same lifecycle record.
|
|
43
|
+
- `p`: pause or resume the selected local process on POSIX systems.
|
|
44
|
+
- `r`: refresh pull request, review, and CI evidence.
|
|
45
|
+
- `x`, then `x`: stop the selected run with confirmation.
|
|
46
|
+
- `?`: show the command reference; `q`: leave the console.
|
|
47
|
+
|
|
48
|
+
Use `/new`, `/repo <owner/name>`, `/branch <name>`, and
|
|
49
|
+
`/executor <codex|claude>` to compose another task. `/attach <path>` adds a
|
|
50
|
+
verified local file reference without copying or deleting the source file.
|
|
51
|
+
Slash commands also provide explicit human gates: `/continue`, `/approve`,
|
|
52
|
+
`/criteria`, `/checks`, `/recheck`, `/pause`, `/resume`, and `/stop`. Approval
|
|
53
|
+
notes, acceptance criteria, and required checks are recorded in the run charter
|
|
54
|
+
before orchestration continues. The console does not pretend that noninteractive
|
|
55
|
+
`codex exec` or `claude -p` accepts mid-process stdin; active-run guidance is
|
|
56
|
+
shown as queued until the next executor attempt.
|
|
23
57
|
|
|
24
58
|
Structured run snapshots and process events are persisted remotely. Executor
|
|
25
59
|
instructions and the latest bounded log lines are redacted at both the CLI and
|
|
@@ -47,6 +81,13 @@ Start `simy` from the selected repository or a workspace containing it. Set
|
|
|
47
81
|
`SIMY_REPO_ROOT` when repositories live under a different root. The CLI
|
|
48
82
|
verifies the checkout's GitHub `origin` before starting an executor.
|
|
49
83
|
|
|
84
|
+
The real-PTY console E2E can be rerun with `npm run test:e2e:console`. It starts
|
|
85
|
+
from an empty CLI chat, types repository, branch, executor, attachment, and task
|
|
86
|
+
input through a pseudoterminal, creates the Web ledger, spawns real child
|
|
87
|
+
processes, and exercises HIL plus lifecycle controls. It regenerates the
|
|
88
|
+
screenshots, terminal frames, raw transcript, and SHA-256 manifest under
|
|
89
|
+
`docs/pr-evidence/cli-coding-loop-console/`.
|
|
90
|
+
|
|
50
91
|
## Publishing
|
|
51
92
|
|
|
52
93
|
Publishing is handled by GitHub Actions in `.github/workflows/publish.yml`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@awak-app/simy-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Local SIMY coding-loop agent for Codex and Claude Code.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -13,8 +13,12 @@
|
|
|
13
13
|
"scripts": {
|
|
14
14
|
"start": "node ./src/index.js",
|
|
15
15
|
"test": "node --test",
|
|
16
|
-
"
|
|
17
|
-
"
|
|
16
|
+
"test:e2e:console": "node ./scripts/console-e2e.js",
|
|
17
|
+
"test:e2e:console:real-provider": "node ./scripts/real-provider-console-e2e.js",
|
|
18
|
+
"test:e2e:console:fullstack": "node ./scripts/fullstack-cli-smoke.js",
|
|
19
|
+
"check": "npm run check:syntax && npm run check:real-provider-syntax && npm test && npm run check:package",
|
|
20
|
+
"check:real-provider-syntax": "node --check ./scripts/real-codex-probe.js && node --check ./scripts/real-claude-probe.js && node --check ./scripts/real-provider-console-fixture.js && node --check ./scripts/real-provider-console-e2e.js",
|
|
21
|
+
"check:syntax": "node --check ./src/index.js && node --check ./src/agent.js && node --check ./src/browser.js && node --check ./src/web-api.js && node --check ./src/run-registry.js && node --check ./src/backend-executable.js && node --check ./src/provider-stream.js && node --check ./src/console/index.js && node --check ./src/console/app.js && node --check ./src/console/commands.js && node --check ./src/local-attachments.js && node --check ./src/repository-inventory.js && node --check ./src/session-store.js && node --check ./src/web-origin.js && node --check ./src/workspace-context.js && node --check ./src/orchestrator/index.js && node --check ./src/orchestrator/shared.js && node --check ./src/orchestrator/risk.js && node --check ./src/orchestrator/contract.js && node --check ./src/orchestrator/instruction.js && node --check ./src/orchestrator/execution-io.js && node --check ./src/orchestrator/presentation.js && node --check ./src/orchestrator/result.js && node --check ./src/orchestrator/evidence.js && node --check ./src/orchestrator/independent-audit.js && node --check ./src/orchestrator/audit.js && node --check ./src/orchestrator/loop.js && node --check ./src/runner.js && node --check ./scripts/fixtures/fake-coding-backend.js && node --check ./scripts/console-e2e-fixture.js && node --check ./scripts/console-e2e.js && node --check ./scripts/real-provider-console-fixture.js && node --check ./scripts/real-provider-console-e2e.js && node --check ./scripts/fullstack-cli-smoke.js && node --check ./scripts/check-package-contents.js",
|
|
18
22
|
"check:package": "node ./scripts/check-package-contents.js"
|
|
19
23
|
},
|
|
20
24
|
"engines": {
|
|
@@ -31,5 +35,14 @@
|
|
|
31
35
|
"license": "UNLICENSED",
|
|
32
36
|
"publishConfig": {
|
|
33
37
|
"access": "public"
|
|
38
|
+
},
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"ink": "^6.8.0",
|
|
41
|
+
"react": "^19.2.0"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@xterm/headless": "^6.0.0",
|
|
45
|
+
"ink-testing-library": "^4.0.0",
|
|
46
|
+
"node-pty": "^1.1.0"
|
|
34
47
|
}
|
|
35
48
|
}
|