@inneranimalmedia/agentsam-sdk 2.4.1 → 2.5.0
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 +7 -6
- package/docs/AGENTSAM_WORKBENCH.md +30 -0
- package/docs/AUTH_IDENTITY_CONTRACT.md +52 -0
- package/docs/CAPABILITIES.md +5 -3
- package/docs/CLI_SHELL.md +57 -80
- package/docs/CMS_STUDIO.md +101 -0
- package/docs/CONTEXT.md +170 -0
- package/docs/LOCAL_OLLAMA.md +58 -0
- package/docs/MERKLE.md +19 -19
- package/docs/PORTABLE_CONTEXT.md +4 -3
- package/docs/PROJECT_CONFIG.md +72 -0
- package/docs/RELEASES.md +26 -2
- package/docs/REPOSITORY_INTELLIGENCE.md +1 -1
- package/docs/REPOSITORY_KNOWLEDGE.md +114 -0
- package/docs/SDK_WORKER.md +86 -0
- package/docs/SECURITY.md +59 -22
- package/docs/client-cms-editor.md +15 -0
- package/docs/local-studio/WORKMODE_DONOR_NOTES.md +485 -0
- package/package.json +17 -4
- package/packages/identity/package.json +11 -2
- package/packages/identity/src/contracts/auth-config.js +98 -0
- package/packages/identity/src/index.js +1 -0
- package/packages/identity/src/oauth/README.md +2 -2
- package/packages/identity/src/oauth/credentials.js +11 -4
- package/packages/identity/src/oauth/iam-platform.js +3 -3
- package/packages/identity/src/providers/iam/index.js +7 -7
- package/packages/identity/src/providers/iam/oauth.js +6 -4
- package/packages/identity/src/providers/iam/profile.js +5 -5
- package/packages/identity/tests/auth-config.test.mjs +57 -0
- package/packages/identity/tests/oauth-credentials.test.mjs +13 -2
- package/protocol/FILEMETA_V1.md +95 -0
- package/protocol/INSPECT_VIEWS_V1.md +40 -0
- package/protocol/MERKLE_PERSISTENCE_V1.md +50 -0
- package/protocol/MERKLE_V1.md +3 -1
- package/protocol/capabilities/manifest.json +32 -3
- package/protocol/capabilities/repository-snapshot.schema.json +1 -0
- package/protocol/context/context-budget.schema.json +41 -0
- package/protocol/context/context-item.schema.json +20 -0
- package/protocol/context/resolved-context-pack.schema.json +42 -0
- package/protocol/context/result-policy.schema.json +17 -0
- package/protocol/knowledge/context-pack.schema.json +33 -0
- package/protocol/knowledge/retrieval-query.schema.json +68 -13
- package/python/README.md +15 -7
- package/python/agentsam_sdk/cli.py +0 -21
- package/python/agentsam_sdk/tui/README.md +17 -12
- package/python/agentsam_sdk/tui/bootstrap.py +2 -2
- package/python/agentsam_sdk/tui/demo.py +25 -10
- package/python/agentsam_sdk/tui/onboarding.py +208 -0
- package/python/tests/test_tui_cli.py +7 -6
- package/skills/README.md +21 -0
- package/skills/agentsam-app-fundamentals/SKILL.md +165 -0
- package/skills/agentsam-app-fundamentals/references/graphs-contracts-ast-merkle.md +89 -0
- package/skills/agentsam-app-fundamentals/references/trust-credentials-and-destinations.md +99 -0
- package/skills/agentsam-jr-dev/SKILL.md +232 -0
- package/skills/agentsam-jr-dev/references/real-application-logic.md +156 -0
- package/skills/agentsam-jr-dev/references/web-application-fundamentals.md +240 -0
- package/skills/agentsam-progression-guard/SKILL.md +197 -0
- package/skills/agentsam-progression-guard/references/checkpoint-chain.md +111 -0
- package/skills/agentsam-progression-guard/references/hooks-operational-io.md +96 -0
- package/skills/catalog.json +53 -0
- package/src/capabilities/index.js +7 -0
- package/src/capabilities/repository-snapshot-view.js +238 -0
- package/src/capabilities/repository-snapshot.js +28 -14
- package/src/cli.js +108 -56
- package/src/commands/context.js +14 -2
- package/src/commands/db.js +4 -7
- package/src/commands/deploy.js +17 -31
- package/src/commands/interactive.js +21 -0
- package/src/commands/knowledge.js +27 -4
- package/src/commands/merkle-persist.js +118 -0
- package/src/commands/merkle.js +32 -17
- package/src/commands/models.js +107 -0
- package/src/commands/ollama.js +259 -0
- package/src/commands/preferences.js +102 -0
- package/src/commands/product.js +86 -16
- package/src/commands/security.js +3 -3
- package/src/commands/shell.js +71 -27
- package/src/commands/skills.js +66 -0
- package/src/commands/start-local.js +1 -1
- package/src/commands/tunnel.js +5 -4
- package/src/context/budget.js +58 -0
- package/src/context/compact.js +28 -0
- package/src/context/index.js +5 -0
- package/src/context/resolve.js +84 -0
- package/src/context/result-policy.js +66 -0
- package/src/index.js +16 -0
- package/src/indexing/execution-boundary.js +144 -0
- package/src/indexing/index.js +8 -0
- package/src/indexing/provider.js +41 -0
- package/src/knowledge/config.js +2 -2
- package/src/knowledge/context-pack.js +12 -1
- package/src/knowledge/contracts.js +9 -4
- package/src/knowledge/engine.js +7 -3
- package/src/knowledge/service/server.js +1 -1
- package/src/lib/bridge-client.js +7 -5
- package/src/lib/cli-preferences.js +74 -0
- package/src/lib/core-client.js +8 -8
- package/src/lib/deploy-receipt/index.js +5 -2
- package/src/lib/detect-context.js +6 -5
- package/src/lib/identity-scaffold.js +1 -1
- package/src/lib/local-scaffold.js +35 -33
- package/src/lib/local-status.js +9 -17
- package/src/lib/merkle/cloudflare-persistence.js +321 -0
- package/src/lib/merkle/filemeta.js +43 -0
- package/src/lib/merkle/git-ignore.js +24 -0
- package/src/lib/merkle/hash.js +1 -0
- package/src/lib/merkle/index.js +22 -0
- package/src/lib/merkle/persistence.js +72 -0
- package/src/lib/merkle/semantic.js +359 -0
- package/src/lib/merkle/snapshot.js +9 -3
- package/src/lib/merkle/tree.js +11 -6
- package/src/lib/project-config.js +227 -0
- package/src/lib/project-rules.js +68 -0
- package/src/lib/save-sdk-token.js +1 -1
- package/src/lib/slash-commands.js +2 -1
- package/src/lib/tools.js +11 -5
- package/src/security/index.js +1 -0
- package/src/security/inventory.js +4 -1
- package/src/security/render.js +27 -5
- package/src/security/scan.js +24 -9
- package/src/security/trust-boundary.js +24 -0
- package/src/skills/index.js +64 -0
- package/src/tools/index.js +1 -0
- package/src/tools/search.js +70 -0
- package/src/ui/ansi.js +1 -1
- package/src/ui/boot.js +56 -0
- package/src/ui/merkle/render.js +1 -0
- package/src/ui/runtime-activity.js +192 -0
- package/src/ui/theme.js +19 -18
- package/test/app-building-skills.test.mjs +61 -0
- package/test/apps-scaffold-contract.test.mjs +56 -0
- package/test/capabilities.test.mjs +53 -4
- package/test/cli-preferences.test.mjs +25 -0
- package/test/context.test.mjs +95 -0
- package/test/indexing-provider.test.mjs +29 -0
- package/test/jr-dev-skill.test.mjs +26 -0
- package/test/knowledge-context-pack.test.mjs +19 -0
- package/test/knowledge.test.mjs +1 -1
- package/test/merkle-persistence.test.mjs +91 -0
- package/test/merkle.test.mjs +77 -3
- package/test/models.test.mjs +37 -0
- package/test/ollama.test.mjs +94 -0
- package/test/project-config.test.mjs +81 -0
- package/test/project-rules.test.mjs +44 -0
- package/test/release-hygiene.test.mjs +34 -0
- package/test/repository-snapshot-view.test.mjs +112 -0
- package/test/runtime-activity.test.mjs +98 -0
- package/test/sdk-worker-contract.test.mjs +68 -0
- package/test/security.test.mjs +46 -0
- package/test/shell.test.mjs +8 -1
- package/test/skills.test.mjs +22 -0
- package/test/smoke.mjs +2 -2
- package/test/theme-portability.test.mjs +14 -0
- package/test/tools-search.test.mjs +27 -0
- package/examples/agentsam-tui-ansi.mjs +0 -149
- package/src/commands/tui.js +0 -120
- package/src/ui/splash-xterm.js +0 -290
- package/src/ui/splash.js +0 -426
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Local Ollama development kit
|
|
2
|
+
|
|
3
|
+
AgentSam supports Ollama as an **opt-in local development runtime**. Ollama stays on the developer's machine; the `agentsam-sdk` Cloudflare Worker does not receive an Ollama binding and does not run an Ollama model at the edge.
|
|
4
|
+
|
|
5
|
+
Canonical local defaults:
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
OLLAMA_BASE_URL=http://127.0.0.1:11434
|
|
9
|
+
OLLAMA_MODEL=qwen2.5-coder
|
|
10
|
+
OLLAMA_EMBED_MODEL=mxbai-embed-large
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Setup
|
|
14
|
+
|
|
15
|
+
```sh
|
|
16
|
+
agentsam ollama setup
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
That writes the three values into the current project's `.env` and, when `.agentsam/config.json` exists, records only portable `models.local` metadata (provider + environment variable names). Machine URLs and chosen model values stay in `.env` / `.agentsam/cli.json`, not the committed project manifest. It does **not** silently install software or download models.
|
|
20
|
+
|
|
21
|
+
Explicit opt-ins are available:
|
|
22
|
+
|
|
23
|
+
```sh
|
|
24
|
+
agentsam ollama setup --install
|
|
25
|
+
agentsam ollama setup --start
|
|
26
|
+
agentsam ollama setup --pull
|
|
27
|
+
agentsam ollama setup --install --start --pull
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Automatic installation uses Homebrew on macOS/Linux when available, or `winget` on Windows. Hosts without a supported local package manager receive a clear manual-install message instead of running an opaque remote install script.
|
|
31
|
+
|
|
32
|
+
Model management:
|
|
33
|
+
|
|
34
|
+
```sh
|
|
35
|
+
agentsam ollama status
|
|
36
|
+
agentsam ollama list
|
|
37
|
+
agentsam ollama pull
|
|
38
|
+
agentsam ollama pull qwen2.5-coder
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
`ollama pull` with no model pulls the configured chat and embedding models.
|
|
42
|
+
|
|
43
|
+
## Local tunnel boundary
|
|
44
|
+
|
|
45
|
+
For a remote AgentSam session, use the existing **user-hosted terminal tunnel** to execute `agentsam ollama ...` on the user's machine. The local CLI then reaches `127.0.0.1:11434` from that machine.
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
remote agent
|
|
49
|
+
│
|
|
50
|
+
│ existing terminal tunnel
|
|
51
|
+
▼
|
|
52
|
+
local AgentSam CLI
|
|
53
|
+
│
|
|
54
|
+
└── http://127.0.0.1:11434
|
|
55
|
+
local Ollama process
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
This avoids exposing Ollama's HTTP API to the public internet and avoids pretending that a Cloudflare Worker can reach the developer's loopback interface. A deliberately configured HTTP tunnel can still be supplied with `--base-url`, but it is not the default product path.
|
package/docs/MERKLE.md
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
# Merkle CLI and
|
|
1
|
+
# Merkle CLI and interactive explorer
|
|
2
2
|
|
|
3
3
|
```bash
|
|
4
4
|
agentsam merkle root .
|
|
5
5
|
agentsam merkle root . --include dist
|
|
6
|
-
agentsam merkle snapshot . --out .agentsam/merkle.json
|
|
6
|
+
agentsam merkle snapshot . --semantic --out .agentsam/merkle.json
|
|
7
7
|
agentsam merkle verify .agentsam/merkle.json
|
|
8
|
-
agentsam merkle diff ./copy-a ./copy-b --
|
|
8
|
+
agentsam merkle diff ./copy-a ./copy-b --interactive
|
|
9
9
|
agentsam merkle inspect .
|
|
10
|
-
agentsam
|
|
10
|
+
agentsam merkle explore .
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
The commands work on ordinary folders
|
|
13
|
+
The commands work on ordinary folders. Git, cloud accounts, databases, and containers are not required. Only `snapshot` writes files. There is no synchronization/restore command or background watcher in this version.
|
|
14
14
|
|
|
15
15
|
## Commands
|
|
16
16
|
|
|
@@ -21,50 +21,50 @@ The commands work on ordinary folders, including a mini prototype. Git, cloud ac
|
|
|
21
21
|
| `verify <snapshot>` | Rescans the recorded root and reports unchanged, modified, added, and removed files/links. |
|
|
22
22
|
| `diff <a> <b>` | Compares directories, snapshots, or one of each. No files are copied. |
|
|
23
23
|
| `inspect [path]` | Prints the full tree/hash breakdown; also accepts a snapshot. |
|
|
24
|
-
| `
|
|
24
|
+
| `explore [path]` | Opens the keyboard-driven terminal explorer. |
|
|
25
25
|
|
|
26
|
-
`--
|
|
26
|
+
`--semantic` works with root, snapshot, and directory inspection. It adds deterministic `agentsam-filemeta` package/system/category/layer metadata plus JavaScript/TypeScript AST symbols/imports while leaving the v1 content root unchanged. Semantic snapshots validate both roots when reloaded.
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
`--interactive` works with root, inspect, verify, and diff. Up/down or j/k select an entry; Enter/right expands a directory; left collapses it. `c` filters changes, `r` rescans, and q/Esc/Ctrl+C exits. The explorer uses real scan counts, honors `NO_COLOR`, adapts to terminal resize, wraps the selected hash on narrow screens, and restores cursor/terminal mode on exit. `r` does not update a saved baseline.
|
|
29
|
+
|
|
30
|
+
With piped output or `TERM=dumb`, the explorer prints once and exits. `--json` always bypasses interactive mode. Root JSON contains `rootPath`, `rootHash`, `policyHash`, `stats`, and `policy`; with `--semantic` it also contains `metadataRoot`, `classifier`, and `semanticStats`; verify/diff JSON contains `equal`, roots, counts, and changed entries.
|
|
29
31
|
|
|
30
32
|
Exit codes: **0** success/match, **1** differences, **2** invalid input/scan error, **130** interrupted non-interactive scan. Interactive quit after a completed comparison retains its match/difference exit code.
|
|
31
33
|
|
|
32
34
|
## Comparing machines and preserving baselines
|
|
33
35
|
|
|
34
|
-
Copy a manifest to another machine, then explicitly select that machine's checkout:
|
|
35
|
-
|
|
36
36
|
```bash
|
|
37
|
-
agentsam merkle verify ./baseline.json --root ./local-copy --
|
|
37
|
+
agentsam merkle verify ./baseline.json --root ./local-copy --interactive
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
Verification uses the saved include/exclude policy.
|
|
40
|
+
Verification uses the saved include/exclude policy. Content roots are independent of absolute paths, timestamps, permissions, and creation order. Permission `mode` may still be recorded as metadata and, when semantic enrichment is enabled, contributes to the separate metadata root.
|
|
41
41
|
|
|
42
|
-
Snapshots are baselines, not signatures or attestations
|
|
42
|
+
Snapshots are baselines, not signatures or attestations. Protect a trusted baseline separately. Avoid editing a directory while hashing it; detectable changes/read errors fail the scan, but this is not an atomic filesystem snapshot.
|
|
43
43
|
|
|
44
|
-
Existing snapshot files are not overwritten without `--force`. Snapshot output is excluded from its own tree.
|
|
44
|
+
Existing snapshot files are not overwritten without `--force`. Snapshot output is excluded from its own tree. Save historical snapshots under `.agentsam/merkle/`, which is ignored by default:
|
|
45
45
|
|
|
46
46
|
```bash
|
|
47
47
|
agentsam merkle snapshot . --out .agentsam/merkle/before.json
|
|
48
48
|
agentsam merkle snapshot . --out .agentsam/merkle/after.json
|
|
49
|
-
agentsam merkle diff .agentsam/merkle/before.json .agentsam/merkle/after.json --
|
|
49
|
+
agentsam merkle diff .agentsam/merkle/before.json .agentsam/merkle/after.json --interactive
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
## Ignore rules
|
|
53
53
|
|
|
54
54
|
Default ignored names: `.git`, `node_modules`, `dist`, `.DS_Store`. Default ignored root subtrees/files: `.agentsam/cache`, `.agentsam/merkle`, `.agentsam/merkle.json`.
|
|
55
55
|
|
|
56
|
-
`--include dist` disables that default rule. Repeat `--include` for additional default rules. `--exclude generated` ignores that name at any depth; `--exclude assets/cache` ignores that exact relative subtree. Rules are literal paths, not globs or `.gitignore` patterns. Explicit exclusions take precedence.
|
|
56
|
+
`--include dist` disables that default rule. Repeat `--include` for additional default rules. `--exclude generated` ignores that name at any depth; `--exclude assets/cache` ignores that exact relative subtree. Rules are literal paths, not globs or `.gitignore` patterns. Explicit exclusions take precedence.
|
|
57
57
|
|
|
58
|
-
The scanner hashes symlink target strings without following them. Special files
|
|
58
|
+
The scanner hashes symlink target strings without following them. Special files, unrepresentable filenames, unreadable files, and directory depths over 256 produce errors instead of silently weakening the tree.
|
|
59
59
|
|
|
60
60
|
## Reusable Node library
|
|
61
61
|
|
|
62
62
|
```js
|
|
63
|
-
import { buildMerkleTree,
|
|
63
|
+
import { buildMerkleTree, readSnapshot, diffTrees } from '@inneranimalmedia/agentsam-sdk/merkle';
|
|
64
64
|
|
|
65
65
|
const baseline = await readSnapshot('./baseline.json');
|
|
66
66
|
const current = await buildMerkleTree('./checkout', { policy: baseline.policy });
|
|
67
67
|
const comparison = diffTrees(baseline, current);
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
-
The library is local filesystem tooling. It adds no Worker bindings, user/workspace identity, network calls
|
|
70
|
+
The library is local filesystem tooling. It adds no Worker bindings, user/workspace identity, or network calls. The interoperable content hash format is specified in [MERKLE_V1](../protocol/MERKLE_V1.md), and semantic identity in [FILEMETA_V1](../protocol/FILEMETA_V1.md).
|
package/docs/PORTABLE_CONTEXT.md
CHANGED
|
@@ -44,13 +44,14 @@ For trusted operator/service calls, configure one secret:
|
|
|
44
44
|
export AGENTSAM_BRIDGE_KEY='...'
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
Canonical IAM/platform origin:
|
|
48
48
|
|
|
49
49
|
```bash
|
|
50
|
-
export
|
|
51
|
-
# AGENTSAM_CORE_URL and IAM_CORE_URL are also supported.
|
|
50
|
+
export IAM_ORIGIN='https://agentsam.example.com'
|
|
52
51
|
```
|
|
53
52
|
|
|
53
|
+
`AGENTSAM_BASE_URL`, `AGENTSAM_CORE_URL`, and `IAM_CORE_URL` remain compatibility-only read fallbacks during the migration window.
|
|
54
|
+
|
|
54
55
|
Programmatic API:
|
|
55
56
|
|
|
56
57
|
```js
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# `.agentsam/config.json` — portable project manifest
|
|
2
|
+
|
|
3
|
+
`.agentsam/config.json` is the small committed handshake that tells Agent Sam what project it is operating in and which portable defaults apply. It is **not** a runtime journal.
|
|
4
|
+
|
|
5
|
+
Current schema:
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"schema_version": 2,
|
|
10
|
+
"project": {
|
|
11
|
+
"name": "agentsam-sdk"
|
|
12
|
+
},
|
|
13
|
+
"repository": {
|
|
14
|
+
"id": "github:samprimeaux/agentsam-sdk",
|
|
15
|
+
"remote": "origin"
|
|
16
|
+
},
|
|
17
|
+
"product": {
|
|
18
|
+
"preset": null,
|
|
19
|
+
"features": [],
|
|
20
|
+
"capabilities": []
|
|
21
|
+
},
|
|
22
|
+
"defaults": {
|
|
23
|
+
"mode": "agent",
|
|
24
|
+
"profile": "default",
|
|
25
|
+
"runtime": "local",
|
|
26
|
+
"model": "auto",
|
|
27
|
+
"deploy_target": null
|
|
28
|
+
},
|
|
29
|
+
"merkle": {
|
|
30
|
+
"enabled": true,
|
|
31
|
+
"semantic": true,
|
|
32
|
+
"persistence": "auto"
|
|
33
|
+
},
|
|
34
|
+
"rules": {
|
|
35
|
+
"file": ".agentsamrules"
|
|
36
|
+
},
|
|
37
|
+
"knowledge": {
|
|
38
|
+
"config": ".agentsam/knowledge.json"
|
|
39
|
+
},
|
|
40
|
+
"local": {
|
|
41
|
+
"database": ".agentsam/data/agentsam.sqlite",
|
|
42
|
+
"schema": "db/schema.sql"
|
|
43
|
+
},
|
|
44
|
+
"sdk": {
|
|
45
|
+
"created_with": "2.5.0"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Ownership boundaries
|
|
51
|
+
|
|
52
|
+
```text
|
|
53
|
+
.agentsam/config.json committed portable project identity + defaults
|
|
54
|
+
.agentsamrules committed repository instructions; bounded when loaded
|
|
55
|
+
.agentsam/knowledge.json repository index / retrieval configuration
|
|
56
|
+
.agentsam/cli.json local user's terminal/runtime/model preference; gitignored
|
|
57
|
+
D1 / runtime stores runs, plans, tasks, executions, model history, subagents
|
|
58
|
+
Merkle snapshot store filesystem evidence and snapshot lineage
|
|
59
|
+
Git source-control authority
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Do **not** add account/user/tenant/workspace identity, current run IDs, active task state, PTY/session/connection IDs, current Merkle roots, provider credentials, deployment receipts, model history, or subagent execution records to the project manifest.
|
|
63
|
+
|
|
64
|
+
`repository.id` is the portable repository authority for Agent Sam surfaces. Existing `knowledge.json.repository_id` remains readable during migration, but when both files exist the IDs must agree. Git remote discovery is fallback/adoption evidence rather than a second persistent identity.
|
|
65
|
+
|
|
66
|
+
For a repository already hosted on a known Git provider, IDs use the portable form such as `github:owner/repo`. Repositories without a provider identity receive a durable `local:<uuid>` ID.
|
|
67
|
+
|
|
68
|
+
Project defaults are intentionally different from machine preferences. A project can say `defaults.model = "auto"`; a developer can independently prefer an Ollama model on one laptop in `.agentsam/cli.json` without changing the repository contract.
|
|
69
|
+
|
|
70
|
+
## Project instructions
|
|
71
|
+
|
|
72
|
+
Generated projects include `.agentsamrules` as the human-editable repository instruction surface. The manifest only points to it; the instructions themselves stay outside JSON so teams can maintain them like other repository documentation. Runtime loaders hash and bound the file before it enters context.
|
package/docs/RELEASES.md
CHANGED
|
@@ -1,10 +1,34 @@
|
|
|
1
1
|
# `@inneranimalmedia/agentsam-sdk` release receipts
|
|
2
2
|
|
|
3
|
-
**2.
|
|
4
|
-
|
|
3
|
+
**2.5.0 is the current release candidate on `main`; it is not published yet.**
|
|
4
|
+
The npm `latest` dist-tag is **2.4.1**. The private identity workspace continues to
|
|
5
|
+
ship through root SDK exports and is not published separately.
|
|
6
|
+
|
|
7
|
+
Release-candidate base: `236afa84b553fb0d0109abe41939488945c4fc74`. The final tagged
|
|
8
|
+
publish commit will be recorded here after release. Publishing remains manual and
|
|
9
|
+
`prepublishOnly` runs `npm run verify:release`.
|
|
10
|
+
|
|
11
|
+
## 2.5.0 candidate highlights
|
|
12
|
+
|
|
13
|
+
- `agentsam` is the interactive product entrypoint; renderer selection is internal, and live thinking/activity scenes now run automatically around real Agent Sam work.
|
|
14
|
+
- Portable project authority is `.agentsam/config.json` + `.agentsamrules`; local CLI preferences remain non-authoritative.
|
|
15
|
+
- Public SDK seams include `/context`, `/tools`, `/indexing`, `/repository`, `/knowledge`, and `/skills`.
|
|
16
|
+
- Context resolution is bounded by independent budgets and result policies; consumed tool results compact to evidence-preserving receipts.
|
|
17
|
+
- Tool discovery is cards-first rather than full-schema catalog injection.
|
|
18
|
+
- `RepositoryKnowledgeProvider` keeps local, hosted, and custom repository-intelligence implementations behind one contract.
|
|
19
|
+
- Portable skills now include `agentsam-jr-dev`, `agentsam-app-fundamentals` (`quick-bytes`), and `agentsam-progression-guard` (`no-regress`), with deeper references loaded on demand and CLI discovery through `agentsam skills`.
|
|
20
|
+
- Local model inventory/Ollama support remains preference-only and does not become a second routing authority.
|
|
21
|
+
- Merkle/repository evidence, knowledge receipts, and project identity share the same portable repository identity.
|
|
22
|
+
- `agentsam security scan` now combines OSV/dependency evidence with Merkle-bound AST execution trust-boundary contradictions; `agentsam inspect` exposes the same bounded analysis and mechanical repair actions.
|
|
5
23
|
|
|
6
24
|
| npm version | Published (UTC) | IAM git SHA (40) | Notes |
|
|
7
25
|
|-------------|-----------------|------------------|-------|
|
|
26
|
+
| 2.5.0 | _(pending)_ | _(tag at publish)_ | Release candidate; full verification required immediately before publish. |
|
|
27
|
+
| 2.4.1 | 2026-09-11T05:45:03.622Z | `a256ababededd904da555e7898bc8afd753737d2` | Latest published package before 2.5.0. |
|
|
28
|
+
| 2.4.0 | 2026-09-11T05:29:02.811Z | `81c8659977953bed53c2adb0a341ce7382be4794` | Published 2.4 line. |
|
|
29
|
+
| 2.3.0 | 2026-09-11T05:09:40.046Z | `b517a720fb9b90f35c26f9ef87a84abd60d7ee01` | Published 2.3 line. |
|
|
30
|
+
| 2.2.1 | 2026-09-11T04:08:18.238Z | `fefb587312df4fd4e177e839c5374c9621e7463d` | Published 2.2 patch. |
|
|
31
|
+
| 2.2.0 | 2026-09-11T02:48:47.291Z | `06539ba3d3c2238b08201192dbec33d0e8df4b8a` | Published 2.2 line. |
|
|
8
32
|
| 2.1.0 | 2026-09-09 (UTC, approx) | `a2570afdf1ae99542565fa3937abd7dbf95d121f` | Recon bounded-worker protocol: `protocol/recon/*` schemas, `python/agentsam_sdk/repository/recon` (packet/validate + `from_ripgrep`/`from_ast_grep` adapters), `agentsam recon pack\|validate` CLI (#27, #28). SDK-native change — no corresponding IAM platform-repo mirror SHA. |
|
|
9
33
|
| 2.0.0 | 2026-09-03T02:21:44.857Z | `ed629869e701809d2bf4c61bd56d05d8d8d1e183` | Stable SDK 2.0.0; npm `latest`; identity bundled through root exports; release verification and dependency scan passed before publish. |
|
|
10
34
|
| 2.0.0-alpha.identity.5 | _(pending npm)_ | `df064114eb7f8888f163e4a07dfddf19035b7169` | Password reset service, `registerFinalizeInboundOAuth`, IAM live proof. |
|
|
@@ -10,7 +10,7 @@ python -m agentsam_sdk.repository.intelligence --repo-root ..
|
|
|
10
10
|
python -m agentsam_sdk.repository.intelligence --repo-root .. --json
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
The snapshot is deterministic evidence suitable for CLI/
|
|
13
|
+
The snapshot is deterministic evidence suitable for CLI/terminal UI presentation or downstream agent reasoning. Scores are relative within a snapshot, not quality grades:
|
|
14
14
|
|
|
15
15
|
- **density** — code/file concentration
|
|
16
16
|
- **activity** — recent changed lines and commit touches
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Repository knowledge provider contract
|
|
2
|
+
|
|
3
|
+
The SDK does not define the InnerAnimal production code index as the universal implementation.
|
|
4
|
+
|
|
5
|
+
The npm package defines the portable capability contract. A host chooses how to satisfy it.
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
Agent Sam repository understanding
|
|
9
|
+
│
|
|
10
|
+
┌───────┼────────┐
|
|
11
|
+
│ │ │
|
|
12
|
+
▼ ▼ ▼
|
|
13
|
+
Local Hosted Existing
|
|
14
|
+
SDK AgentSam system
|
|
15
|
+
│ │ │
|
|
16
|
+
lightweight full Sourcegraph /
|
|
17
|
+
local slice platform Qdrant /
|
|
18
|
+
custom service
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Provider surface
|
|
22
|
+
|
|
23
|
+
A `RepositoryKnowledgeProvider` supplies:
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
status()
|
|
27
|
+
refresh()
|
|
28
|
+
findSymbol()
|
|
29
|
+
graph()
|
|
30
|
+
retrieve()
|
|
31
|
+
snapshot()
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
The SDK intentionally does not prescribe D1 tables, pgvector schemas, parser processes, queues, or embedding providers behind those calls.
|
|
35
|
+
|
|
36
|
+
```js
|
|
37
|
+
import {
|
|
38
|
+
createRepositoryKnowledgeClient,
|
|
39
|
+
describeRepositoryKnowledgeProvider,
|
|
40
|
+
} from '@inneranimalmedia/agentsam-sdk/indexing';
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
A provider should describe actual capabilities rather than relying on stale prose metadata:
|
|
44
|
+
|
|
45
|
+
```js
|
|
46
|
+
describeRepositoryKnowledgeProvider({
|
|
47
|
+
provider: 'inneranimal-platform',
|
|
48
|
+
structure: 'tree-sitter',
|
|
49
|
+
lexical: true,
|
|
50
|
+
semantic: true,
|
|
51
|
+
graph: true,
|
|
52
|
+
history: true,
|
|
53
|
+
evidence: 'merkle',
|
|
54
|
+
});
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## User-facing concepts
|
|
58
|
+
|
|
59
|
+
The terminal/UI should normally present only:
|
|
60
|
+
|
|
61
|
+
```text
|
|
62
|
+
Code map where things are and how they connect
|
|
63
|
+
Search exact/lexical search + optional semantic search
|
|
64
|
+
History generations, Git evidence, and Merkle checkpoints
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Parser technology, dimensions, vector tables, queue topology, generation internals, and storage adapters belong under advanced/debug surfaces.
|
|
68
|
+
|
|
69
|
+
## Local SDK implementation
|
|
70
|
+
|
|
71
|
+
The current SDK contains a portable/local knowledge slice with deterministic repository intelligence, lightweight JS/TS structural parsing, bounded chunks, local SQLite, optional Postgres/pgvector, optional embeddings, generations, and Merkle evidence.
|
|
72
|
+
|
|
73
|
+
That is useful as a standalone implementation. It is not presented as the architecture of every Agent Sam host.
|
|
74
|
+
|
|
75
|
+
## InnerAnimal production implementation
|
|
76
|
+
|
|
77
|
+
The InnerAnimal platform is a separate host implementation with a broader code-intelligence pipeline: repository/index generations, a dedicated Tree-sitter parsing service, D1 structural nodes/edges, structural-first graph retrieval, semantic projections, and bounded hydration.
|
|
78
|
+
|
|
79
|
+
That implementation should plug into the provider contract rather than be copied into npm.
|
|
80
|
+
|
|
81
|
+
The same rule applies to the platform's logical RAG lanes (`code`, `schema`, `memory`, `docs`, `media`, `archive`), generic knowledge ingestion pipeline, and memory/experience systems. Those are specialized host infrastructure behind portable Agent Sam capability contracts.
|
|
82
|
+
|
|
83
|
+
## Existing/custom systems
|
|
84
|
+
|
|
85
|
+
A customer does not need to reproduce Agent Sam's internal storage model. They can implement the provider surface around their own system.
|
|
86
|
+
|
|
87
|
+
Examples:
|
|
88
|
+
|
|
89
|
+
```text
|
|
90
|
+
Sourcegraph
|
|
91
|
+
Elasticsearch
|
|
92
|
+
Postgres / pgvector
|
|
93
|
+
Qdrant
|
|
94
|
+
Weaviate
|
|
95
|
+
custom Tree-sitter service
|
|
96
|
+
homegrown RAG / graph service
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
The common contract lets Agent Sam ask for status, refresh, symbols, graph evidence, retrieval, and snapshots while the implementation remains the customer's authority.
|
|
100
|
+
|
|
101
|
+
## Evidence lineage
|
|
102
|
+
|
|
103
|
+
Provider results should carry stable evidence references when possible:
|
|
104
|
+
|
|
105
|
+
```text
|
|
106
|
+
repository_id
|
|
107
|
+
index generation
|
|
108
|
+
Merkle snapshot_id / root hash
|
|
109
|
+
Git revision
|
|
110
|
+
path + span
|
|
111
|
+
provider receipt
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
That lets context packs select evidence without copying the entire underlying index into the prompt.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# `agentsam-sdk` Cloudflare application
|
|
2
|
+
|
|
3
|
+
The SDK repository root owns package/tooling concerns. Each deployable product under `apps/` owns its own runtime. For Local Studio, the production Cloudflare application is owned by `apps/local-studio/backend/`.
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
agentsam-sdk/
|
|
7
|
+
├─ package.json
|
|
8
|
+
├─ package-lock.json
|
|
9
|
+
├─ packages/...
|
|
10
|
+
└─ apps/local-studio/
|
|
11
|
+
├─ package.json
|
|
12
|
+
├─ package-lock.json
|
|
13
|
+
├─ frontend/package.json
|
|
14
|
+
├─ backend/
|
|
15
|
+
│ ├─ package.json
|
|
16
|
+
│ ├─ wrangler.jsonc
|
|
17
|
+
│ ├─ worker/
|
|
18
|
+
│ │ └─ index.js checked-in Worker authority
|
|
19
|
+
│ └─ server/ Nitro routes/runtime modules
|
|
20
|
+
└─ shared/agentsam/package.json
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
`backend/worker/index.js` is the stable Cloudflare entrypoint and imports the generated Nitro handler from `../../.output/server/index.mjs`. `backend/wrangler.jsonc` therefore points to `worker/index.js`; assets remain generated under `../.output/public`.
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
main = worker/index.js
|
|
27
|
+
assets.directory = ../.output/public
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Run installs from `apps/local-studio/` with its committed lockfile:
|
|
31
|
+
|
|
32
|
+
```sh
|
|
33
|
+
npm ci
|
|
34
|
+
npm run build
|
|
35
|
+
npm run cf:verify-output
|
|
36
|
+
npm run cf:dry-run
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Production uses only `https://agentsam.inneranimalmedia.com`; `workers_dev` is disabled. The SDK root has no production `worker/` or `wrangler.jsonc`.
|
|
40
|
+
|
|
41
|
+
## Binding contract
|
|
42
|
+
|
|
43
|
+
```text
|
|
44
|
+
agentsam-sdk
|
|
45
|
+
├─ DB -> inneranimalmedia-business
|
|
46
|
+
├─ WEBSITE_ASSETS -> agentsam-os-blueprint-content
|
|
47
|
+
├─ AGENTSAM_WAI -> Workers AI provider
|
|
48
|
+
├─ EXECOS -> execos service binding
|
|
49
|
+
├─ PTY_SERVICE -> iam-vpc VPC service
|
|
50
|
+
├─ IAM_ORIGIN -> https://inneranimalmedia.com
|
|
51
|
+
├─ IAM_CLIENT_ID -> public OAuth client id
|
|
52
|
+
├─ IAM_CLIENT_SECRET -> secret
|
|
53
|
+
├─ AGENTSAM_SDK_KEY -> secret
|
|
54
|
+
└─ AGENTSAM_BRIDGE_KEY -> secret
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Hosted model credentials are secrets: `XAI_API_KEY`, `OPENAI_API_KEY`, and `GEMINI_API_KEY`. Grok model inference is the `XAI_API_KEY` provider lane and is independent from the pre-wired Grok gate viewer identity/session system.
|
|
58
|
+
|
|
59
|
+
`AGENTSAM_WORKER_ROLE` is not part of the SDK contract. `IAM_OAUTH_ISSUER` and `AGENTSAM_SDK_TOKEN` are SDK 2.5 migration-read aliases only; new configuration uses `IAM_ORIGIN` and `AGENTSAM_SDK_KEY`.
|
|
60
|
+
|
|
61
|
+
## Ollama
|
|
62
|
+
|
|
63
|
+
Ollama is local compute with two ways to reach it:
|
|
64
|
+
|
|
65
|
+
```text
|
|
66
|
+
CLI on developer machine
|
|
67
|
+
-> http://127.0.0.1:11434
|
|
68
|
+
|
|
69
|
+
agentsam-sdk Worker
|
|
70
|
+
-> EXECOS service binding
|
|
71
|
+
-> explicit target=local + neutral cwd (`/`)
|
|
72
|
+
-> existing local execution/tunnel fabric
|
|
73
|
+
-> http://127.0.0.1:11434
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
There is no production `OLLAMA_BASE_URL` and no public Ollama hostname. `PTY_SERVICE` remains the lower-level VPC/PTY health lane; model execution goes through ExecOS rather than bypassing the dispatcher. Ollama commands are filesystem-independent, so the ExecOS cwd defaults to portable `/`; `OLLAMA_LOCAL_CWD` can override it when needed. Default local models are `qwen2.5-coder` for chat/code and `mxbai-embed-large` for embeddings.
|
|
77
|
+
|
|
78
|
+
## Merkle persistence
|
|
79
|
+
|
|
80
|
+
Semantic deployment snapshots use the logical `WEBSITE_ASSETS` binding and the provider-neutral `agentsam_fs_merkle_snapshots/` namespace. D1 indexes the snapshot row in `agentsam_fs_merkle_snapshots`; R2 stores the full document. Customer/generated Workers keep the same logical binding and may point it at their own selected storage.
|
|
81
|
+
|
|
82
|
+
```text
|
|
83
|
+
root_hash = content identity
|
|
84
|
+
policy_hash = capture-scope identity
|
|
85
|
+
metadata_root = semantic/index identity
|
|
86
|
+
```
|
package/docs/SECURITY.md
CHANGED
|
@@ -1,23 +1,33 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Security scan and evidence-backed repair
|
|
2
2
|
|
|
3
|
-
AgentSam
|
|
3
|
+
AgentSam combines dependency security evidence with a deterministic execution trust-boundary analysis. `agentsam security scan` checks the npm dependency graph against OSV **and** derives browser/server/shared execution facts from the repository's AST + Merkle semantic index.
|
|
4
|
+
|
|
5
|
+
The core security rule is execution authority, not folder naming:
|
|
6
|
+
|
|
7
|
+
> Code executed on hardware controlled by the user is untrusted client code. Code executed on hardware controlled by the application operator is the trusted server boundary.
|
|
8
|
+
|
|
9
|
+
Anything sent to a browser can be read or modified. Client validation is useful UX, but authentication, authorization, ownership, prices, permissions, resource identity, and other security/correctness invariants must be re-verified by server-owned code. Secrets must never enter the browser dependency graph or public environment.
|
|
10
|
+
|
|
11
|
+
A clean scan means no findings in the checks AgentSam could completely evaluate. It is **not** a proof that an application is secure, and the local AST analyzer currently covers JavaScript/TypeScript-family source. Hosted/custom repository knowledge providers may supply richer structural evidence for additional languages.
|
|
4
12
|
|
|
5
13
|
## Commands
|
|
6
14
|
|
|
7
15
|
~~~bash
|
|
8
16
|
agentsam security scan --path .
|
|
9
17
|
agentsam security check --path . --log /tmp/deploy.log --json
|
|
10
|
-
agentsam security run --path . -- npm run build
|
|
18
|
+
agentsam security run --path . --json -- npm run build
|
|
11
19
|
agentsam security repair --path . --log /tmp/deploy.log --json
|
|
12
20
|
agentsam security repair --path . --apply --verify verify --json
|
|
13
21
|
~~~
|
|
14
22
|
|
|
15
|
-
The alias is
|
|
23
|
+
The alias is `agentsam sca`. Offline scanning still performs the deterministic AST/Merkle trust-boundary analysis, but dependency vulnerability coverage is incomplete without OSV and therefore the overall command exits 2.
|
|
16
24
|
|
|
17
|
-
The run command executes the exact argument vector after
|
|
25
|
+
The `run` command executes the exact argument vector after `--`, without a shell, captures up to 8 MiB, and checks the resulting logs, dependency graph, and source trust boundary. It preserves a failed command as a failed result. Logs are captured rather than streamed; receipts contain categories and line numbers, never raw log lines. It does not roll back a deployment already performed by that command.
|
|
18
26
|
|
|
19
27
|
## What is checked
|
|
20
28
|
|
|
29
|
+
### Dependencies and logs
|
|
30
|
+
|
|
21
31
|
- Exact npm package-lock / shrinkwrap versions 1, 2 and 3, including nested dependencies, aliases, and workspaces. npm-shrinkwrap takes precedence.
|
|
22
32
|
- Lockfile consistency with root/workspace manifest declarations and missing direct lock entries.
|
|
23
33
|
- Full paginated OSV advisories, including IDs, aliases, severity evidence, and package-specific fixed releases. Withdrawn advisories are excluded.
|
|
@@ -25,41 +35,68 @@ The run command executes the exact argument vector after "--", without a shell,
|
|
|
25
35
|
- Engine mismatches, peer conflicts, package-manager configuration warnings, audit summaries, and unclassified warnings.
|
|
26
36
|
- Experimental runtime and pip/npm update notices are explicitly informational.
|
|
27
37
|
|
|
28
|
-
|
|
38
|
+
### Execution trust boundary
|
|
29
39
|
|
|
30
|
-
|
|
40
|
+
AgentSam's semantic Merkle pass records, for indexed JS/TS files:
|
|
31
41
|
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
42
|
+
- content hash and metadata root;
|
|
43
|
+
- inferred/declared `execution_domain` (`browser`, `server`, `shared`, `test`, `tooling`, `framework`, `unknown`);
|
|
44
|
+
- AST imports plus resolved local import edges;
|
|
45
|
+
- names of `process.env` / `import.meta.env` accesses, never their values;
|
|
46
|
+
- parser coverage/errors.
|
|
47
|
+
|
|
48
|
+
The deterministic analyzer then follows the browser-reachable graph and reports contradictions such as:
|
|
49
|
+
|
|
50
|
+
- browser code importing server-owned modules;
|
|
51
|
+
- browser-reachable code importing Node/server-only runtime dependencies;
|
|
52
|
+
- browser code reading private server environment names;
|
|
53
|
+
- public environment names that look secret-bearing (`VITE_*`, `NEXT_PUBLIC_*`, etc. do **not** make a secret safe);
|
|
54
|
+
- shared code depending on server environment state.
|
|
55
|
+
|
|
56
|
+
Findings carry source/target hashes and the semantic `metadata_root`, so a repair can be tied to exact evidence rather than a prose guess. The same analyzer is embedded in `repository.snapshot`, so `agentsam inspect` and `agentsam security scan` do not maintain competing architecture models.
|
|
35
57
|
|
|
36
|
-
|
|
58
|
+
Framework adapters are not guessed away. Exceptional layouts can declare deterministic `agentsam.classify` rules in the nearest package manifest. For example, a server-only DB module physically located in a frontend workspace can declare `execution_domain: "server"`; a generated router/server-function bridge can declare `framework`. Tests and known build-tool config files are separately classified instead of being mistaken for shipped browser roots.
|
|
37
59
|
|
|
38
|
-
|
|
60
|
+
## Mechanical repair contract
|
|
39
61
|
|
|
40
|
-
|
|
62
|
+
Every trust-boundary finding has a deterministic repair action such as:
|
|
41
63
|
|
|
42
|
-
|
|
64
|
+
- `move-server-call-behind-api-boundary`
|
|
65
|
+
- `move-server-dependency-out-of-browser-graph`
|
|
66
|
+
- `move-secret-to-server-runtime`
|
|
67
|
+
- `split-shared-contract-from-server-implementation`
|
|
43
68
|
|
|
44
|
-
|
|
69
|
+
`agentsam security repair` includes these in its plan with the exact evidence refs. They are deliberately `automatic: false` today. Moving an application boundary can change behavior, so AgentSam does not blindly rewrite architecture and claim success.
|
|
70
|
+
|
|
71
|
+
The reliable automatic-repair target is an isolated-worktree workflow: capture the Merkle/metadata baseline, apply a bounded recipe, rebuild/retest, create a fresh semantic snapshot, prove the contradiction disappeared without introducing new ones, and return a before/after receipt. Dependency repair already uses this isolated verified pattern; source-boundary repair will only become automatic when a recipe can satisfy the same proof standard.
|
|
72
|
+
|
|
73
|
+
## Dependency repair
|
|
74
|
+
|
|
75
|
+
Dependency repair produces a plan by default. Applying requires an online complete dependency scan, a clean Git repository root, and an existing npm verification script (`verify`, otherwise `test`, or explicit `--verify SCRIPT`). Automated dependency repair currently requires macOS/Linux; Windows can scan and triage.
|
|
76
|
+
|
|
77
|
+
The command creates a new `agentsam/security-*` branch and worktree under the system temporary directory, leaving the source checkout untouched. It:
|
|
45
78
|
|
|
46
79
|
1. Runs npm audit fix with package-lock-only, ignore-scripts, force=false and legacy-peer-deps=false.
|
|
47
80
|
2. For deprecated dependencies, also runs npm update within existing declared ranges, with scripts disabled and no manifest saving.
|
|
48
81
|
3. Rejects changes outside the selected lockfile and major-version changes at existing dependency paths.
|
|
49
82
|
4. Runs a fresh npm ci with install scripts disabled, then the configured verification script.
|
|
50
|
-
5. Rescans OSV and
|
|
83
|
+
5. Rescans OSV, logs, and the AST/Merkle trust boundary.
|
|
51
84
|
6. Returns a structured receipt with branch, worktree, step exit codes, before/after reports, and verified status.
|
|
52
85
|
|
|
53
|
-
A verified candidate remains available for review/commit. Failed or unresolved candidates are retained for inspection and never marked fixed.
|
|
86
|
+
A verified candidate remains available for review/commit. Failed or unresolved candidates are retained for inspection and never marked fixed. The command never force-pushes, publishes, deploys, executes instructions copied from logs/advisories, or treats an advisory's fixed version as proof of application compatibility.
|
|
54
87
|
|
|
55
|
-
|
|
88
|
+
## Coverage and exit codes
|
|
56
89
|
|
|
57
|
-
|
|
90
|
+
- **0:** complete and clean, already clean, or verified repair candidate.
|
|
91
|
+
- **1:** complete scan with unresolved findings, failed wrapped command, or manual action needed.
|
|
92
|
+
- **2:** incomplete lookup/coverage, offline dependency inventory, invalid input, or failed repair execution.
|
|
58
93
|
|
|
59
|
-
|
|
94
|
+
The npm adapter does not pretend to parse pnpm, Yarn or Bun lock formats. Missing lockfiles, unresolved/external dependencies, and mismatched workspace manifests remain explicitly incomplete. An app workspace that links packages outside its own root can still receive a complete trust-boundary result while its dependency section reports that external package coverage must be scanned at the owning repository root.
|
|
95
|
+
|
|
96
|
+
## Installed automation in this repository
|
|
60
97
|
|
|
61
|
-
|
|
98
|
+
CI and publication workflows use the same `agentsam security` implementation. The root `prepublishOnly` hook runs `npm run verify:release`, which includes the online security scan. The dependency-maintenance workflow can prepare verified lockfile repairs but does not auto-merge, publish, or deploy.
|
|
62
99
|
|
|
63
|
-
Other projects
|
|
100
|
+
Other projects can use the CLI or the exported `@inneranimalmedia/agentsam-sdk/security` API. Repository inspection also carries bounded trust-boundary analysis through `repository.snapshot`; observability/index evidence is not injected wholesale into model context.
|
|
64
101
|
|
|
65
102
|
References: [OSV query API](https://google.github.io/osv.dev/post-v1-query/), [npm audit](https://docs.npmjs.com/cli/v11/commands/npm-audit/), [npm update](https://docs.npmjs.com/cli/v11/commands/npm-update/).
|