@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.
Files changed (158) hide show
  1. package/README.md +7 -6
  2. package/docs/AGENTSAM_WORKBENCH.md +30 -0
  3. package/docs/AUTH_IDENTITY_CONTRACT.md +52 -0
  4. package/docs/CAPABILITIES.md +5 -3
  5. package/docs/CLI_SHELL.md +57 -80
  6. package/docs/CMS_STUDIO.md +101 -0
  7. package/docs/CONTEXT.md +170 -0
  8. package/docs/LOCAL_OLLAMA.md +58 -0
  9. package/docs/MERKLE.md +19 -19
  10. package/docs/PORTABLE_CONTEXT.md +4 -3
  11. package/docs/PROJECT_CONFIG.md +72 -0
  12. package/docs/RELEASES.md +26 -2
  13. package/docs/REPOSITORY_INTELLIGENCE.md +1 -1
  14. package/docs/REPOSITORY_KNOWLEDGE.md +114 -0
  15. package/docs/SDK_WORKER.md +86 -0
  16. package/docs/SECURITY.md +59 -22
  17. package/docs/client-cms-editor.md +15 -0
  18. package/docs/local-studio/WORKMODE_DONOR_NOTES.md +485 -0
  19. package/package.json +17 -4
  20. package/packages/identity/package.json +11 -2
  21. package/packages/identity/src/contracts/auth-config.js +98 -0
  22. package/packages/identity/src/index.js +1 -0
  23. package/packages/identity/src/oauth/README.md +2 -2
  24. package/packages/identity/src/oauth/credentials.js +11 -4
  25. package/packages/identity/src/oauth/iam-platform.js +3 -3
  26. package/packages/identity/src/providers/iam/index.js +7 -7
  27. package/packages/identity/src/providers/iam/oauth.js +6 -4
  28. package/packages/identity/src/providers/iam/profile.js +5 -5
  29. package/packages/identity/tests/auth-config.test.mjs +57 -0
  30. package/packages/identity/tests/oauth-credentials.test.mjs +13 -2
  31. package/protocol/FILEMETA_V1.md +95 -0
  32. package/protocol/INSPECT_VIEWS_V1.md +40 -0
  33. package/protocol/MERKLE_PERSISTENCE_V1.md +50 -0
  34. package/protocol/MERKLE_V1.md +3 -1
  35. package/protocol/capabilities/manifest.json +32 -3
  36. package/protocol/capabilities/repository-snapshot.schema.json +1 -0
  37. package/protocol/context/context-budget.schema.json +41 -0
  38. package/protocol/context/context-item.schema.json +20 -0
  39. package/protocol/context/resolved-context-pack.schema.json +42 -0
  40. package/protocol/context/result-policy.schema.json +17 -0
  41. package/protocol/knowledge/context-pack.schema.json +33 -0
  42. package/protocol/knowledge/retrieval-query.schema.json +68 -13
  43. package/python/README.md +15 -7
  44. package/python/agentsam_sdk/cli.py +0 -21
  45. package/python/agentsam_sdk/tui/README.md +17 -12
  46. package/python/agentsam_sdk/tui/bootstrap.py +2 -2
  47. package/python/agentsam_sdk/tui/demo.py +25 -10
  48. package/python/agentsam_sdk/tui/onboarding.py +208 -0
  49. package/python/tests/test_tui_cli.py +7 -6
  50. package/skills/README.md +21 -0
  51. package/skills/agentsam-app-fundamentals/SKILL.md +165 -0
  52. package/skills/agentsam-app-fundamentals/references/graphs-contracts-ast-merkle.md +89 -0
  53. package/skills/agentsam-app-fundamentals/references/trust-credentials-and-destinations.md +99 -0
  54. package/skills/agentsam-jr-dev/SKILL.md +232 -0
  55. package/skills/agentsam-jr-dev/references/real-application-logic.md +156 -0
  56. package/skills/agentsam-jr-dev/references/web-application-fundamentals.md +240 -0
  57. package/skills/agentsam-progression-guard/SKILL.md +197 -0
  58. package/skills/agentsam-progression-guard/references/checkpoint-chain.md +111 -0
  59. package/skills/agentsam-progression-guard/references/hooks-operational-io.md +96 -0
  60. package/skills/catalog.json +53 -0
  61. package/src/capabilities/index.js +7 -0
  62. package/src/capabilities/repository-snapshot-view.js +238 -0
  63. package/src/capabilities/repository-snapshot.js +28 -14
  64. package/src/cli.js +108 -56
  65. package/src/commands/context.js +14 -2
  66. package/src/commands/db.js +4 -7
  67. package/src/commands/deploy.js +17 -31
  68. package/src/commands/interactive.js +21 -0
  69. package/src/commands/knowledge.js +27 -4
  70. package/src/commands/merkle-persist.js +118 -0
  71. package/src/commands/merkle.js +32 -17
  72. package/src/commands/models.js +107 -0
  73. package/src/commands/ollama.js +259 -0
  74. package/src/commands/preferences.js +102 -0
  75. package/src/commands/product.js +86 -16
  76. package/src/commands/security.js +3 -3
  77. package/src/commands/shell.js +71 -27
  78. package/src/commands/skills.js +66 -0
  79. package/src/commands/start-local.js +1 -1
  80. package/src/commands/tunnel.js +5 -4
  81. package/src/context/budget.js +58 -0
  82. package/src/context/compact.js +28 -0
  83. package/src/context/index.js +5 -0
  84. package/src/context/resolve.js +84 -0
  85. package/src/context/result-policy.js +66 -0
  86. package/src/index.js +16 -0
  87. package/src/indexing/execution-boundary.js +144 -0
  88. package/src/indexing/index.js +8 -0
  89. package/src/indexing/provider.js +41 -0
  90. package/src/knowledge/config.js +2 -2
  91. package/src/knowledge/context-pack.js +12 -1
  92. package/src/knowledge/contracts.js +9 -4
  93. package/src/knowledge/engine.js +7 -3
  94. package/src/knowledge/service/server.js +1 -1
  95. package/src/lib/bridge-client.js +7 -5
  96. package/src/lib/cli-preferences.js +74 -0
  97. package/src/lib/core-client.js +8 -8
  98. package/src/lib/deploy-receipt/index.js +5 -2
  99. package/src/lib/detect-context.js +6 -5
  100. package/src/lib/identity-scaffold.js +1 -1
  101. package/src/lib/local-scaffold.js +35 -33
  102. package/src/lib/local-status.js +9 -17
  103. package/src/lib/merkle/cloudflare-persistence.js +321 -0
  104. package/src/lib/merkle/filemeta.js +43 -0
  105. package/src/lib/merkle/git-ignore.js +24 -0
  106. package/src/lib/merkle/hash.js +1 -0
  107. package/src/lib/merkle/index.js +22 -0
  108. package/src/lib/merkle/persistence.js +72 -0
  109. package/src/lib/merkle/semantic.js +359 -0
  110. package/src/lib/merkle/snapshot.js +9 -3
  111. package/src/lib/merkle/tree.js +11 -6
  112. package/src/lib/project-config.js +227 -0
  113. package/src/lib/project-rules.js +68 -0
  114. package/src/lib/save-sdk-token.js +1 -1
  115. package/src/lib/slash-commands.js +2 -1
  116. package/src/lib/tools.js +11 -5
  117. package/src/security/index.js +1 -0
  118. package/src/security/inventory.js +4 -1
  119. package/src/security/render.js +27 -5
  120. package/src/security/scan.js +24 -9
  121. package/src/security/trust-boundary.js +24 -0
  122. package/src/skills/index.js +64 -0
  123. package/src/tools/index.js +1 -0
  124. package/src/tools/search.js +70 -0
  125. package/src/ui/ansi.js +1 -1
  126. package/src/ui/boot.js +56 -0
  127. package/src/ui/merkle/render.js +1 -0
  128. package/src/ui/runtime-activity.js +192 -0
  129. package/src/ui/theme.js +19 -18
  130. package/test/app-building-skills.test.mjs +61 -0
  131. package/test/apps-scaffold-contract.test.mjs +56 -0
  132. package/test/capabilities.test.mjs +53 -4
  133. package/test/cli-preferences.test.mjs +25 -0
  134. package/test/context.test.mjs +95 -0
  135. package/test/indexing-provider.test.mjs +29 -0
  136. package/test/jr-dev-skill.test.mjs +26 -0
  137. package/test/knowledge-context-pack.test.mjs +19 -0
  138. package/test/knowledge.test.mjs +1 -1
  139. package/test/merkle-persistence.test.mjs +91 -0
  140. package/test/merkle.test.mjs +77 -3
  141. package/test/models.test.mjs +37 -0
  142. package/test/ollama.test.mjs +94 -0
  143. package/test/project-config.test.mjs +81 -0
  144. package/test/project-rules.test.mjs +44 -0
  145. package/test/release-hygiene.test.mjs +34 -0
  146. package/test/repository-snapshot-view.test.mjs +112 -0
  147. package/test/runtime-activity.test.mjs +98 -0
  148. package/test/sdk-worker-contract.test.mjs +68 -0
  149. package/test/security.test.mjs +46 -0
  150. package/test/shell.test.mjs +8 -1
  151. package/test/skills.test.mjs +22 -0
  152. package/test/smoke.mjs +2 -2
  153. package/test/theme-portability.test.mjs +14 -0
  154. package/test/tools-search.test.mjs +27 -0
  155. package/examples/agentsam-tui-ansi.mjs +0 -149
  156. package/src/commands/tui.js +0 -120
  157. package/src/ui/splash-xterm.js +0 -290
  158. 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 terminal explorer
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 --tui
8
+ agentsam merkle diff ./copy-a ./copy-b --interactive
9
9
  agentsam merkle inspect .
10
- agentsam tui merkle .
10
+ agentsam merkle explore .
11
11
  ```
12
12
 
13
- The commands work on ordinary folders, including a mini prototype. 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.
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
- | `tui [path]` | Opens the keyboard-driven explorer. Alias: `agentsam tui merkle [path]`. |
24
+ | `explore [path]` | Opens the keyboard-driven terminal explorer. |
25
25
 
26
- `--tui` also 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 UI uses real scan counts, honors `NO_COLOR`, adapts to terminal resize, wraps the selected hash on narrow screens, and restores the cursor and terminal mode on exit. `r` does not update a saved baseline. Failed rescans remain visible and exit as an error.
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
- With piped output or `TERM=dumb`, the TUI prints once and exits. `--json` always bypasses interactive mode. Root JSON contains `rootPath`, `rootHash`, `stats`, and `policy`; verify/diff JSON contains `equal`, roots, counts, and the changed entries. Inspect/snapshot output contains the full manifest (snapshot adds `output`).
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 --tui
37
+ agentsam merkle verify ./baseline.json --root ./local-copy --interactive
38
38
  ```
39
39
 
40
- Verification uses the saved include/exclude policy. Roots are independent of absolute paths, timestamps, permissions, and creation order. Matching roots mean the **included relative names, file bytes, and literal symlink targets** match, subject to SHA-256 collision resistance. Empty directories are omitted. Line endings, Unicode filename normalization, and symlink target spelling are not normalized.
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 of who created them. Protect a trusted baseline separately. For a consistent scan, avoid editing the directory while hashing it; detectable changes/read errors fail the scan, but this is not an atomic filesystem snapshot.
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. The manifest records a custom output exclusion when necessary. Save multiple historical snapshots under `.agentsam/merkle/`, which is ignored by default:
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 --tui
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. Comparing snapshots with different policies is refused; a directory compared with a snapshot uses the snapshot's policy.
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 (sockets, pipes, devices), unrepresentable filenames, unreadable files, and directory depths over 256 produce errors instead of silently weakening the tree.
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, saveSnapshot, readSnapshot, diffTrees } from '@inneranimalmedia/agentsam-sdk/merkle';
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, or package dependencies. The interoperable hash format is specified in [MERKLE_V1](../protocol/MERKLE_V1.md).
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).
@@ -44,13 +44,14 @@ For trusted operator/service calls, configure one secret:
44
44
  export AGENTSAM_BRIDGE_KEY='...'
45
45
  ```
46
46
 
47
- Optional base URL overrides:
47
+ Canonical IAM/platform origin:
48
48
 
49
49
  ```bash
50
- export AGENTSAM_BASE_URL='https://agentsam.example.com'
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.1.0 is published on npm and is the `latest` dist-tag.** The private identity workspace
4
- continues to ship through the root SDK exports and is not published separately.
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/TUI presentation or downstream agent reasoning. Scores are relative within a snapshot, not quality grades:
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
- # Dependency health and repair
1
+ # Security scan and evidence-backed repair
2
2
 
3
- AgentSam checks npm dependency graphs against known OSV advisories, reads dependency warnings from install/build/deploy logs, and prepares verified repairs. A passing report means no findings in the supported checks; it is not proof that application code is secure.
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 "agentsam sca". Offline scanning lists dependency inventory but **always exits 2**, because no vulnerability lookup was performed. Use "node src/security/cli.mjs" inside this repository before dependencies are installed.
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 "--", without a shell, captures up to 8 MiB, and checks the resulting logs and lockfile. 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. Use it around an existing deployment command to make warnings visible, or around the build before deployment. It does not roll back a deployment already performed by that command.
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
- An old audit summary can be resolved by a complete fresh scan. A deprecated-package log warning is resolved when the package is absent or its version changed and the new lock entry is not deprecated. Engine/peer/configuration/unclassified warnings stay actionable until reviewed at their source.
38
+ ### Execution trust boundary
29
39
 
30
- ## Coverage and exit codes
40
+ AgentSam's semantic Merkle pass records, for indexed JS/TS files:
31
41
 
32
- - **0:** complete and clean, already clean, or verified repair candidate.
33
- - **1:** unresolved findings, failed wrapped command, or manual action needed.
34
- - **2:** incomplete lookup/coverage, offline inventory, invalid input, or failed repair execution.
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
- The npm graph adapter does not pretend to parse pnpm, Yarn or Bun formats. Those managers produce an explicit incomplete result. Missing lockfiles, unresolved ranges, external file/Git dependencies, and mismatched workspace manifests also make coverage incomplete. A package.json-only scan cannot prove transitive coverage.
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
- The scanner includes development and optional dependencies present in the lockfile. It queries OSV for each unique registry package name/version with four concurrent requests, a two-minute overall deadline, per-request timeouts, bounded response bodies, transient-status retries, and pagination-loop detection. Names and versions go to OSV; project source and log contents do not. No local credentials are sent to OSV. Unknown severities remain actionable and raw CVSS vectors are retained rather than guessed.
60
+ ## Mechanical repair contract
39
61
 
40
- ## Repair contract
62
+ Every trust-boundary finding has a deterministic repair action such as:
41
63
 
42
- Repair produces a plan by default. Applying requires an online complete scan, a clean Git repository root, and an existing npm verification script (verify, otherwise test, or explicit --verify SCRIPT). Automated repair currently requires macOS/Linux; Windows can scan and triage.
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
- The command creates a new agentsam/security-* branch and worktree under the system temporary directory, leaving the source checkout untouched. It:
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 triages the original plus new install/verification logs.
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. Native packages needing lifecycle builds may fail verification; that remains visible rather than silently enabling install scripts. The existing verification script runs as trusted project code.
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
- The command never uses force, edits dependency declarations, selects a major upgrade, suppresses warnings, executes instructions copied from logs/advisories, publishes, or deploys. Fixed versions listed by an advisory are evidence, not a promise they are compatible with your application. Breaking upgrades, package replacements, engine changes, and peer-range design decisions remain explicit follow-up work.
88
+ ## Coverage and exit codes
56
89
 
57
- ## Installed automation in this repository
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
- CI and the alpha publication workflow wrap npm installation with the dependency-health gate. The root prepublish hook also performs an online security scan after verification.
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
- The dependency-maintenance workflow runs weekly and can be dispatched manually. It prepares and verifies a repair, then opens a PR when a verified lockfile change exists. It does not auto-merge or publish. It explicitly dispatches CI for its generated branch because GitHub-token-created PRs do not trigger another workflow automatically. An existing repair PR prevents duplicates. If repository settings block PR creation, the verified branch and compare URL remain in the failed run receipt for follow-up. Unresolved or incomplete runs fail visibly and upload a JSON receipt. GitHub repository settings must permit Actions to create pull requests.
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 opt in by wrapping their existing build/install commands or calling the exported @inneranimalmedia/agentsam-sdk/security API. This SDK does not silently monitor unrelated deployments.
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/).