@skein-code/cli 0.3.10 → 0.3.11
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 +23 -3
- package/dist/cli.js +1187 -431
- package/dist/cli.js.map +1 -1
- package/docs/ARCHITECTURE.md +31 -2
- package/docs/NEXT_STEPS.md +11 -9
- package/docs/PRODUCT.md +7 -1
- package/docs/PRODUCT_BENCHMARK.md +2 -1
- package/package.json +4 -4
package/docs/ARCHITECTURE.md
CHANGED
|
@@ -82,13 +82,40 @@ The runner keeps the cacheable system prefix separate from mutable task state:
|
|
|
82
82
|
2. Dynamic turn state: intent directive, current plan, working memory, compacted
|
|
83
83
|
handoff, workflow instructions, activated Skills, retrieved memories, and
|
|
84
84
|
current code evidence.
|
|
85
|
-
3. Conversation: recent user/assistant/tool messages
|
|
86
|
-
|
|
85
|
+
3. Conversation: recent user/assistant/tool messages. Every new tool result is
|
|
86
|
+
bounded before it enters this layer; old tool output is replaced by compact
|
|
87
|
+
receipts when conversation pressure later triggers compaction.
|
|
87
88
|
|
|
88
89
|
This lets providers reuse stable prompt prefixes while ensuring a changed plan
|
|
89
90
|
or newly retrieved file is visible on the next turn. Every retrieved or generated
|
|
90
91
|
state block is marked as untrusted context and cannot authorize a tool call.
|
|
91
92
|
|
|
93
|
+
## Tool output boundary
|
|
94
|
+
|
|
95
|
+
Tool output crosses three independent limits:
|
|
96
|
+
|
|
97
|
+
1. Shell uses bounded capture and reports the stdout/stderr bytes it observed
|
|
98
|
+
and whether that limit omitted source bytes. After an MCP SDK call returns,
|
|
99
|
+
normalization applies a separate 5 MiB ceiling and preserves both ends. It
|
|
100
|
+
limits what reaches the runner; it does not sandbox the MCP process or bound
|
|
101
|
+
bytes already materialized by the transport.
|
|
102
|
+
2. The runner sanitizes terminal control sequences, redacts credential-shaped
|
|
103
|
+
values, estimates CJK and non-CJK token cost, and derives a 1,024–8,192 token
|
|
104
|
+
model-visible budget from active context and remaining session headroom.
|
|
105
|
+
3. If the sanitized captured result is complete and at most 5 MiB, the runner
|
|
106
|
+
can retain it outside the transcript. The model receives a head/tail receipt
|
|
107
|
+
with status, size, failure/exit/changed-file signals, hash, expiry, and a
|
|
108
|
+
bounded `read_tool_artifact` continuation.
|
|
109
|
+
|
|
110
|
+
Artifacts are stored beneath the active project namespace, capped at 20 MiB in
|
|
111
|
+
total, evicted oldest-first, and expired after seven days. File names are hashes
|
|
112
|
+
of validated session/tool-call identities. Reads validate the session binding,
|
|
113
|
+
file identity, byte count, and SHA-256; symlinks and corrupt records fail closed.
|
|
114
|
+
At the start of a run, expired files are pruned and persisted session receipts
|
|
115
|
+
are reconciled against storage before the readback tool can be exposed. Deleting
|
|
116
|
+
a session removes its artifact directory. Session JSON and JSONL events carry
|
|
117
|
+
only receipts and bounded previews, never artifact contents.
|
|
118
|
+
|
|
92
119
|
## Local context selection
|
|
93
120
|
|
|
94
121
|
The context boundary is deliberately in-process and local:
|
|
@@ -122,6 +149,8 @@ Project-local data is kept in `.mosaic/` and ignored by default:
|
|
|
122
149
|
- `config.json` — project overrides;
|
|
123
150
|
- `index.json` — local retrieval index;
|
|
124
151
|
- `sessions/` — auditable conversation and tool state;
|
|
152
|
+
- `tool-artifacts/` — redacted, expiring oversized tool results scoped to a
|
|
153
|
+
saved session;
|
|
125
154
|
- `checkpoints/` — pre-mutation file snapshots and manifests.
|
|
126
155
|
|
|
127
156
|
No source content is sent anywhere except the model endpoint selected by the
|
package/docs/NEXT_STEPS.md
CHANGED
|
@@ -9,7 +9,7 @@ one of the milestones below.
|
|
|
9
9
|
|
|
10
10
|
- Product name: `Skein`; primary executable: `skein`.
|
|
11
11
|
- Compatibility executables: `mosaic` and `mosaic-code`.
|
|
12
|
-
- Current repository version: `0.3.
|
|
12
|
+
- Current repository version: `0.3.11`.
|
|
13
13
|
- Runtime requirement: Node.js `>=22.16.0` (the runtime uses unflagged
|
|
14
14
|
`node:sqlite` with FTS5, and current CLI/build dependencies require this
|
|
15
15
|
Node 22 baseline).
|
|
@@ -41,8 +41,8 @@ npm audit --omit=dev
|
|
|
41
41
|
npm run release:verify -- --output-dir artifacts/package
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
-
The latest verified package is `skein-code-cli-0.3.
|
|
45
|
-
its SHA-256 to `artifacts/package/skein-code-cli-0.3.
|
|
44
|
+
The latest verified package is `skein-code-cli-0.3.11.tgz`. The verifier writes
|
|
45
|
+
its SHA-256 to `artifacts/package/skein-code-cli-0.3.11.tgz.sha256`, and CI
|
|
46
46
|
retains the checksum beside the package metadata. The checksum is deliberately
|
|
47
47
|
not copied into this packaged document because doing so would change the
|
|
48
48
|
archive it describes.
|
|
@@ -50,7 +50,7 @@ archive it describes.
|
|
|
50
50
|
The final verification included a fresh install and real PTY interaction for
|
|
51
51
|
all three executable aliases, `/about`, a permission prompt, denial, and clean
|
|
52
52
|
Ctrl+C exit. PTY coverage included 20, 24 ASCII, 40, 80, 120 columns and a
|
|
53
|
-
40x10 short-height case. The current
|
|
53
|
+
40x10 short-height case. The current 42-file, 424-test suite passes the full check.
|
|
54
54
|
|
|
55
55
|
## Recommended Order
|
|
56
56
|
|
|
@@ -78,11 +78,13 @@ Implementation notes:
|
|
|
78
78
|
- `npm run release:verify` reproduces the package from source, installs it into
|
|
79
79
|
an isolated prefix, rejects packaged local state, and exercises `skein`,
|
|
80
80
|
`mosaic`, and `mosaic-code`.
|
|
81
|
-
- The `main` branch rule requires the strict `check` status. Version 0.3.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
81
|
+
- The `main` branch rule requires the strict `check` status. Version 0.3.11
|
|
82
|
+
gives every tool-result path a language-aware dynamic token firewall, retains
|
|
83
|
+
complete captured output as redacted session-scoped artifacts, exposes
|
|
84
|
+
SHA-bound line or UTF-8 byte readback only when storage receipts agree, and
|
|
85
|
+
makes upstream shell/MCP truncation explicit. Session deletion and expiry
|
|
86
|
+
remove retained output; ordinary short result events keep their existing
|
|
87
|
+
shape.
|
|
86
88
|
Its tag, GitHub verification, and npm publication use the same source commit.
|
|
87
89
|
|
|
88
90
|
### P1: Skein Storage Namespace And Migration
|
package/docs/PRODUCT.md
CHANGED
|
@@ -71,7 +71,7 @@ Sources:
|
|
|
71
71
|
| Context | Local BM25/path/symbol index, visible startup build/validation gate, freshness checks, token packing, multi-root, `@file` mentions |
|
|
72
72
|
| Models | OpenAI, Anthropic, Gemini, OpenAI-compatible endpoints |
|
|
73
73
|
| Agent | Multi-turn tool loop, task plan, evidence-gated completion, automatic verification, ask-only mode |
|
|
74
|
-
| Tools | Read, list, search, write, patch, shell, Git, context search, task updates |
|
|
74
|
+
| Tools | Read, list, search, write, patch, shell, Git, context search, task updates, session-scoped oversized-result readback |
|
|
75
75
|
| Trust | Workspace path boundary, allow/ask/deny policy, command rules, hooks, checkpoints |
|
|
76
76
|
| Sessions | Local persistence, resume/latest, list/show/delete/export |
|
|
77
77
|
| UX | Ink TUI, responsive branded welcome/workspace rail, action timeline, context telemetry, plan rail, inline permission band, interruption |
|
|
@@ -95,6 +95,12 @@ when a compatible endpoint omits token counters, clamps the provider output
|
|
|
95
95
|
allowance to the remaining budget, and records skipped tool calls rather than
|
|
96
96
|
leaving an incomplete assistant/tool message pair.
|
|
97
97
|
|
|
98
|
+
Tool output has a separate budget. Oversized success and failure results retain
|
|
99
|
+
the evidence needed to decide the next action without injecting the full log
|
|
100
|
+
into every following model call. Complete captured output can be paged from a
|
|
101
|
+
redacted, expiring, session-bound local artifact; upstream capture loss remains
|
|
102
|
+
explicit and is never described as recoverable.
|
|
103
|
+
|
|
98
104
|
That makes Skein particularly strong for individual developers, regulated
|
|
99
105
|
teams, self-hosted environments, and tooling groups building their own agent
|
|
100
106
|
workflows.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Skein Product Benchmark
|
|
2
2
|
|
|
3
3
|
This is a capability and workflow comparison, not a claim that products use
|
|
4
|
-
the same models or pricing. It was reviewed on 2026-07-
|
|
4
|
+
the same models or pricing. It was reviewed on 2026-07-25 against public
|
|
5
5
|
product documentation.
|
|
6
6
|
|
|
7
7
|
## Positioning
|
|
@@ -21,6 +21,7 @@ product surfaces.
|
|
|
21
21
|
| Area | Mainstream signal | Skein today | Product implication |
|
|
22
22
|
| --- | --- | --- | --- |
|
|
23
23
|
| Context | Auggie automatically indexes projects and offers context-aware interactive and print modes. Its MCP Tool Search avoids loading every remote schema up front. See [Auggie overview](https://docs.augmentcode.com/cli/overview) and [integrations](https://docs.augmentcode.com/cli/integrations). | Local BM25/path/symbol retrieval with language-aware chunks, current-file freshness checks, diversity-aware token packing, progressive Skills, and hard token caps. MCP schemas are registered eagerly. | Benchmark local recall and latency by language, then make MCP tool discovery lazy and measurable. |
|
|
24
|
+
| Tool result economy | FastCtx argues for structured file/search tools, explicit pagination, bounded output tiers, and persistent background-job logs so the model spends fewer turns on shell mechanics. See the [FastCtx repository](https://github.com/yc-duan/fastctx) and its [LINUX DO introduction](https://linux.do/t/topic/2612425). These are design signals, not independent evidence that every model becomes more accurate. | Native tools already use closed schemas and permission/checkpoint boundaries. Oversized results now use a dynamic token budget, head/tail receipts, source-truncation telemetry, and redacted session-scoped local readback. Single-file UTF-8 reads and foreground-only shell execution remain narrower than FastCtx. | Keep FastCtx optional through MCP instead of duplicating the default kernel. Add measured read/list/search continuation and batch reading before considering persistent background jobs. |
|
|
24
25
|
| Workflow modes | Claude Code documents isolated subagents, agent teams, hooks, code intelligence, Skills, MCP, and plugins in one extension model. See [Claude Code extensions](https://code.claude.com/docs/en/features-overview). Copilot CLI exposes Plan and Autopilot modes. See [Copilot CLI](https://github.com/features/copilot/cli). | Ask and Build modes exist; Ask is read-only but does not produce a named approval-ready plan. | Add an explicit Plan mode. Keep it read-only and require approval before Build. |
|
|
25
26
|
| Code intelligence | Claude Code advertises language-server-backed symbol navigation and live type errors. | Retrieval is lexical/BM25/path/symbol index based; no LSP diagnostics or rename graph. | Add an optional LSP adapter after storage and scheduler foundations. |
|
|
26
27
|
| Parallel work | Claude documents isolated subagents and agent teams; Copilot CLI offers background delegation and fleet-style parallel work. | Routed multi-model councils share bounded reports, observe/guard/strict task-budget policies, reviewer acceptance/revision, and a responsive Team Cockpit. The main agent remains the only writer. | Add worktree-isolated writers, deterministic integration, and conflict/rollback UX without weakening the visible review gate. |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skein-code/cli",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.11",
|
|
4
4
|
"description": "A context-first, model-agnostic coding agent with an auditable terminal workspace.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
},
|
|
17
17
|
"skein": {
|
|
18
18
|
"releaseNotes": [
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
19
|
+
"Large tool results now use a language-aware dynamic token budget with status-preserving head and tail receipts",
|
|
20
|
+
"Complete captured output can be read back through redacted, expiring, session-scoped local artifacts",
|
|
21
|
+
"Shell and MCP source truncation is explicit, and session deletion removes retained output"
|
|
22
22
|
]
|
|
23
23
|
},
|
|
24
24
|
"bin": {
|