@ornexus/neocortex 4.60.49 → 4.60.50

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 (33) hide show
  1. package/dist/sbom.cdx.json +23 -23
  2. package/install.ps1 +1 -1
  3. package/install.sh +1 -1
  4. package/package.json +2 -2
  5. package/packages/client/dist/adapters/platform-detector.d.ts +9 -0
  6. package/packages/client/dist/adapters/platform-detector.js +1 -1
  7. package/packages/client/dist/cli.js +3 -2
  8. package/packages/client/dist/commands/invoke.d.ts +4 -0
  9. package/packages/client/dist/commands/invoke.js +49 -49
  10. package/packages/client/dist/commands/native-agent.d.ts +1 -0
  11. package/packages/client/dist/commands/native-agent.js +2 -0
  12. package/packages/client/dist/continuity/migrations/006-native-agent-dispatches.d.ts +9 -0
  13. package/packages/client/dist/continuity/migrations/006-native-agent-dispatches.js +48 -0
  14. package/packages/client/dist/continuity/native-agent-store.d.ts +13 -0
  15. package/packages/client/dist/continuity/native-agent-store.js +1 -0
  16. package/packages/client/dist/continuity/native-agent-types.d.ts +54 -0
  17. package/packages/client/dist/continuity/native-agent-types.js +1 -0
  18. package/packages/client/dist/continuity/sqlite-store.d.ts +43 -2
  19. package/packages/client/dist/continuity/sqlite-store.js +88 -62
  20. package/packages/client/dist/index.d.ts +1 -0
  21. package/packages/client/dist/index.js +1 -1
  22. package/targets-stubs/antigravity/gemini.md +1 -1
  23. package/targets-stubs/antigravity/skill/SKILL.md +1 -1
  24. package/targets-stubs/claude-code/neocortex-root.agent.yaml +1 -1
  25. package/targets-stubs/claude-code/neocortex-root.md +2 -2
  26. package/targets-stubs/claude-code/neocortex.agent.yaml +1 -1
  27. package/targets-stubs/claude-code/neocortex.md +2 -2
  28. package/targets-stubs/codex/AGENTS.md +35 -2
  29. package/targets-stubs/codex/neocortex.toml +6 -0
  30. package/targets-stubs/cursor/agent.md +2 -2
  31. package/targets-stubs/gemini-cli/agent.md +2 -2
  32. package/targets-stubs/opencode/neocortex-root.md +1 -1
  33. package/targets-stubs/vscode/neocortex.agent.md +2 -2
@@ -984,7 +984,7 @@
984
984
  "version": "1.26.0"
985
985
  },
986
986
  {
987
- "bom-ref": "@neocortex/client@4.60.49",
987
+ "bom-ref": "@neocortex/client@4.60.50",
988
988
  "group": "@neocortex",
989
989
  "name": "client",
990
990
  "properties": [
@@ -993,9 +993,9 @@
993
993
  "value": "node_modules/@neocortex/client"
994
994
  }
995
995
  ],
996
- "purl": "pkg:npm/%40neocortex/client@4.60.49",
996
+ "purl": "pkg:npm/%40neocortex/client@4.60.50",
997
997
  "type": "library",
998
- "version": "4.60.49"
998
+ "version": "4.60.50"
999
999
  },
1000
1000
  {
1001
1001
  "bom-ref": "@neocortex/core@0.1.0",
@@ -1012,7 +1012,7 @@
1012
1012
  "version": "0.1.0"
1013
1013
  },
1014
1014
  {
1015
- "bom-ref": "@neocortex/server@4.60.49",
1015
+ "bom-ref": "@neocortex/server@4.60.50",
1016
1016
  "group": "@neocortex",
1017
1017
  "name": "server",
1018
1018
  "properties": [
@@ -1021,12 +1021,12 @@
1021
1021
  "value": "node_modules/@neocortex/server"
1022
1022
  }
1023
1023
  ],
1024
- "purl": "pkg:npm/%40neocortex/server@4.60.49",
1024
+ "purl": "pkg:npm/%40neocortex/server@4.60.50",
1025
1025
  "type": "library",
1026
- "version": "4.60.49"
1026
+ "version": "4.60.50"
1027
1027
  },
1028
1028
  {
1029
- "bom-ref": "@neocortex/shared@4.60.49",
1029
+ "bom-ref": "@neocortex/shared@4.60.50",
1030
1030
  "group": "@neocortex",
1031
1031
  "name": "shared",
1032
1032
  "properties": [
@@ -1035,9 +1035,9 @@
1035
1035
  "value": "node_modules/@neocortex/shared"
1036
1036
  }
1037
1037
  ],
1038
- "purl": "pkg:npm/%40neocortex/shared@4.60.49",
1038
+ "purl": "pkg:npm/%40neocortex/shared@4.60.50",
1039
1039
  "type": "library",
1040
- "version": "4.60.49"
1040
+ "version": "4.60.50"
1041
1041
  },
1042
1042
  {
1043
1043
  "bom-ref": "@opentelemetry/api-logs@0.214.0",
@@ -9405,17 +9405,17 @@
9405
9405
  "dependsOn": [
9406
9406
  "@clack/prompts@1.0.1",
9407
9407
  "@modelcontextprotocol/sdk@1.26.0",
9408
- "@neocortex/client@4.60.49",
9408
+ "@neocortex/client@4.60.50",
9409
9409
  "@neocortex/core@0.1.0",
9410
- "@neocortex/server@4.60.49",
9411
- "@neocortex/shared@4.60.49",
9410
+ "@neocortex/server@4.60.50",
9411
+ "@neocortex/shared@4.60.50",
9412
9412
  "better-sqlite3@12.11.1",
9413
9413
  "execa@9.6.1",
9414
9414
  "node-cache@5.1.2",
9415
9415
  "picocolors@1.1.1",
9416
9416
  "zod@4.4.3"
9417
9417
  ],
9418
- "ref": "@ornexus/neocortex@4.60.49"
9418
+ "ref": "@ornexus/neocortex@4.60.50"
9419
9419
  },
9420
9420
  {
9421
9421
  "dependsOn": [
@@ -9456,7 +9456,7 @@
9456
9456
  "@fastify/jwt@10.2.2",
9457
9457
  "@fastify/rate-limit@10.3.0",
9458
9458
  "@fastify/static@10.1.3",
9459
- "@neocortex/shared@4.60.49",
9459
+ "@neocortex/shared@4.60.50",
9460
9460
  "@sentry/node@10.62.0",
9461
9461
  "bcryptjs@3.0.3",
9462
9462
  "drizzle-orm@0.45.2",
@@ -9469,7 +9469,7 @@
9469
9469
  "stripe@20.4.1",
9470
9470
  "yaml@2.9.0"
9471
9471
  ],
9472
- "ref": "@neocortex/server@4.60.49"
9472
+ "ref": "@neocortex/server@4.60.50"
9473
9473
  },
9474
9474
  {
9475
9475
  "dependsOn": [
@@ -9590,16 +9590,16 @@
9590
9590
  },
9591
9591
  {
9592
9592
  "dependsOn": [
9593
- "@neocortex/shared@4.60.49",
9593
+ "@neocortex/shared@4.60.50",
9594
9594
  "better-sqlite3@12.11.1",
9595
9595
  "jose@6.2.2",
9596
9596
  "keytar@7.9.0"
9597
9597
  ],
9598
- "ref": "@neocortex/client@4.60.49"
9598
+ "ref": "@neocortex/client@4.60.50"
9599
9599
  },
9600
9600
  {
9601
9601
  "dependsOn": [
9602
- "@neocortex/shared@4.60.49"
9602
+ "@neocortex/shared@4.60.50"
9603
9603
  ],
9604
9604
  "ref": "@neocortex/core@0.1.0"
9605
9605
  },
@@ -10653,7 +10653,7 @@
10653
10653
  "ref": "@lukeed/ms@2.0.2"
10654
10654
  },
10655
10655
  {
10656
- "ref": "@neocortex/shared@4.60.49"
10656
+ "ref": "@neocortex/shared@4.60.50"
10657
10657
  },
10658
10658
  {
10659
10659
  "ref": "@opentelemetry/api@1.9.1"
@@ -11136,8 +11136,8 @@
11136
11136
  "metadata": {
11137
11137
  "component": {
11138
11138
  "author": "OrNexus Team",
11139
- "bom-ref": "@ornexus/neocortex@4.60.49",
11140
- "description": "Neocortex v4.60.49 - Orquestrador de Desenvolvimento de Epics & Stories para Claude Code",
11139
+ "bom-ref": "@ornexus/neocortex@4.60.50",
11140
+ "description": "Neocortex v4.60.50 - Orquestrador de Desenvolvimento de Epics & Stories para Claude Code",
11141
11141
  "externalReferences": [
11142
11142
  {
11143
11143
  "comment": "as detected from PackageJson property \"bugs.url\"",
@@ -11170,9 +11170,9 @@
11170
11170
  "value": ""
11171
11171
  }
11172
11172
  ],
11173
- "purl": "pkg:npm/%40ornexus/neocortex@4.60.49?vcs_url=git%2Bhttps%3A%2F%2Fgithub.com%2FOrNexus-AI%2Fneocortex.git",
11173
+ "purl": "pkg:npm/%40ornexus/neocortex@4.60.50?vcs_url=git%2Bhttps%3A%2F%2Fgithub.com%2FOrNexus-AI%2Fneocortex.git",
11174
11174
  "type": "application",
11175
- "version": "4.60.49"
11175
+ "version": "4.60.50"
11176
11176
  },
11177
11177
  "tools": {
11178
11178
  "components": [
package/install.ps1 CHANGED
@@ -17,7 +17,7 @@ param(
17
17
  [string]$ServerUrl = ('https://{0}.{1}.{2}' -f 'api','neocortex','sh')
18
18
  )
19
19
 
20
- $VERSION = "4.60.49"
20
+ $VERSION = "4.60.50"
21
21
 
22
22
  # =============================================================================
23
23
  # CONFIGURACOES
package/install.sh CHANGED
@@ -4,7 +4,7 @@
4
4
  # Development Orchestrator
5
5
 
6
6
  # Versao do instalador
7
- VERSION="4.60.49"
7
+ VERSION="4.60.50"
8
8
 
9
9
  # Flags
10
10
  MIGRATION_DETECTED=false
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ornexus/neocortex",
3
- "version": "4.60.49",
4
- "description": "Neocortex v4.60.49 - Orquestrador de Desenvolvimento de Epics & Stories para Claude Code",
3
+ "version": "4.60.50",
4
+ "description": "Neocortex v4.60.50 - Orquestrador de Desenvolvimento de Epics & Stories para Claude Code",
5
5
  "keywords": [
6
6
  "claude",
7
7
  "claude-code",
@@ -16,6 +16,7 @@
16
16
  *
17
17
  * Story 42.8
18
18
  */
19
+ import type { NativeHostAttestationV1 } from '../continuity/native-agent-types.js';
19
20
  /** Supported platform target identifiers */
20
21
  export type TargetId = 'claude-code' | 'cursor' | 'vscode' | 'gemini' | 'codex' | 'opencode' | 'github-copilot-cli' | 'kimi' | 'antigravity' | 'openclaw' | 'grok' | 'runner' | 'unknown';
21
22
  /** Context provided to the platform detector */
@@ -23,7 +24,15 @@ export interface DetectionContext {
23
24
  readonly cwd: string;
24
25
  readonly env: Readonly<Record<string, string | undefined>>;
25
26
  readonly targetFlag?: string;
27
+ /** Version observed from the host executable; never inferred from a flag. */
28
+ readonly nativeHostVersion?: string | null;
26
29
  }
30
+ /**
31
+ * Build a bounded Codex host attestation independently from platform selection.
32
+ * Explicit target flags can select a fallback target, but never become trusted
33
+ * native-host evidence.
34
+ */
35
+ export declare function detectNativeHostAttestation(context: DetectionContext, detection?: DetectionResult): NativeHostAttestationV1 | undefined;
27
36
  /** Result of platform detection */
28
37
  export interface DetectionResult {
29
38
  readonly targetId: TargetId;
@@ -1 +1 @@
1
- import{existsSync as l}from"node:fs";import{join as u}from"node:path";const g=new Set(["claude-code","cursor","vscode","gemini","codex","opencode","github-copilot-cli","kimi","antigravity","openclaw","grok","runner","unknown"]),m=Object.freeze({claude:"claude-code","claude-code":"claude-code",cursor:"cursor",vscode:"vscode","vscode-copilot":"vscode",gemini:"gemini","gemini-cli":"gemini",codex:"codex","codex-cli":"codex",opencode:"opencode","copilot-cli":"github-copilot-cli","github-copilot-cli":"github-copilot-cli",kimi:"kimi",antigravity:"antigravity",openclaw:"openclaw","open-claw":"openclaw",grok:"grok","grok-build":"grok",runner:"runner",unknown:"unknown"});function S(o){return g.has(o)}function I(o){return m[o.trim().toLowerCase()]??null}const E=o=>l(o);function _(o,i=E){if(o.targetFlag){const e=I(o.targetFlag);return e?{targetId:e,confidence:1,reason:`Explicit --target=${e} flag`,reasonCode:"platform-target-explicit"}:{targetId:"unknown",confidence:0,reason:"Explicit platform target is not recognized",reasonCode:"platform-target-invalid-override"}}const a=e=>o.env[e]!==void 0,c=[],r=(e,d,n)=>{n.some(a)&&c.push({targetId:e,signal:d})};r("claude-code","Claude Code runtime",["CLAUDE_CODE","CLAUDE_AGENT"]),r("codex","Codex runtime",["CODEX_THREAD_ID","CODEX_SESSION_ID","CODEX_SANDBOX_NETWORK_DISABLED"]),r("opencode","OpenCode runtime",["OPENCODE","OPENCODE_SESSION_ID"]),r("cursor","Cursor runtime",["CURSOR_SESSION_ID","CURSOR_TRACE_ID"]),r("gemini","Gemini CLI runtime",["GEMINI_CLI"]),r("github-copilot-cli","GitHub Copilot CLI runtime",["COPILOT_CLI"]),r("kimi","Kimi Code runtime",["KIMI_SESSION_ID","KIMI_CODE_SESSION_ID"]),r("antigravity","Antigravity runtime",["ANTIGRAVITY_SESSION_ID","ANTIGRAVITY_AGENT"]),r("openclaw","OpenClaw runtime",["OPENCLAW_SESSION_ID","OPENCLAW_GATEWAY"]),r("grok","Grok Build runtime",["GROK_SESSION_ID","GROK_AGENT","GROK_HOME"]);const t=[...new Map(c.map(e=>[e.targetId,e])).values()];if(t.length>1)return{targetId:"unknown",confidence:0,reason:`Conflicting runtime platform signals: ${t.map(({targetId:e})=>e).sort().join(", ")}`,reasonCode:"platform-target-ambiguous"};if(t.length===1){const e=t[0],n={"claude-code":"CLAUDE.md",codex:"AGENTS.md",cursor:".cursor",gemini:"GEMINI.md",vscode:".vscode",grok:"AGENTS.md"}[e.targetId],s=n?i(u(o.cwd,n)):!1;return{targetId:e.targetId,confidence:s?.98:.95,reason:`${e.signal} signal${s?` corroborated by ${n}`:""}`,reasonCode:"platform-target-runtime-signal"}}return a("VSCODE_PID")||o.env.TERM_PROGRAM==="vscode"?{targetId:"vscode",confidence:.75,reason:"VS Code runtime signal without a stronger agent runtime signal",reasonCode:"platform-target-runtime-signal"}:["AGENTS.md",".cursor",".cursorrules","CLAUDE.md",".vscode","GEMINI.md"].some(e=>i(u(o.cwd,e)))?{targetId:"unknown",confidence:0,reason:"Filesystem marker found without platform-owned runtime evidence",reasonCode:"platform-target-filesystem-only"}:{targetId:"unknown",confidence:0,reason:"No platform runtime signals detected",reasonCode:"platform-target-unknown"}}export{_ as detectPlatform,S as isValidTargetId,I as normalizeTargetId};
1
+ import{existsSync as m}from"node:fs";import{join as l}from"node:path";const g=/^[A-Za-z0-9][A-Za-z0-9._+-]{0,63}$/;function C(n,d=O(n)){if(d.targetId!=="codex")return;const r=["CODEX_THREAD_ID","CODEX_SESSION_ID","CODEX_SANDBOX_NETWORK_DISABLED"].some(c=>n.env[c]!==void 0),i=r&&n.env.CODEX_REMOTE_PAYLOAD!==void 0,o=i?"codex-desktop":r?"codex-cli":"unknown",t=n.nativeHostVersion?.trim()??"",s=g.test(t)?t:null,e=!!n.targetFlag&&!r;return Object.freeze({schemaVersion:1,platformTarget:"codex",hostKind:o,hostVersion:s,origin:e?"explicit-override":i?"host-observed":r?"environment":"unknown",confidence:e||o==="unknown"?"unknown":i?"observed":"inferred",publicSafe:!0})}const I=new Set(["claude-code","cursor","vscode","gemini","codex","opencode","github-copilot-cli","kimi","antigravity","openclaw","grok","runner","unknown"]),E=Object.freeze({claude:"claude-code","claude-code":"claude-code",cursor:"cursor",vscode:"vscode","vscode-copilot":"vscode",gemini:"gemini","gemini-cli":"gemini",codex:"codex","codex-cli":"codex",opencode:"opencode","copilot-cli":"github-copilot-cli","github-copilot-cli":"github-copilot-cli",kimi:"kimi",antigravity:"antigravity",openclaw:"openclaw","open-claw":"openclaw",grok:"grok","grok-build":"grok",runner:"runner",unknown:"unknown"});function D(n){return I.has(n)}function f(n){return E[n.trim().toLowerCase()]??null}const p=n=>m(n);function O(n,d=p){if(n.targetFlag){const e=f(n.targetFlag);return e?{targetId:e,confidence:1,reason:`Explicit --target=${e} flag`,reasonCode:"platform-target-explicit"}:{targetId:"unknown",confidence:0,reason:"Explicit platform target is not recognized",reasonCode:"platform-target-invalid-override"}}const r=e=>n.env[e]!==void 0,i=[],o=(e,c,a)=>{a.some(r)&&i.push({targetId:e,signal:c})};o("claude-code","Claude Code runtime",["CLAUDE_CODE","CLAUDE_AGENT"]),o("codex","Codex runtime",["CODEX_THREAD_ID","CODEX_SESSION_ID","CODEX_SANDBOX_NETWORK_DISABLED"]),o("opencode","OpenCode runtime",["OPENCODE","OPENCODE_SESSION_ID"]),o("cursor","Cursor runtime",["CURSOR_SESSION_ID","CURSOR_TRACE_ID"]),o("gemini","Gemini CLI runtime",["GEMINI_CLI"]),o("github-copilot-cli","GitHub Copilot CLI runtime",["COPILOT_CLI"]),o("kimi","Kimi Code runtime",["KIMI_SESSION_ID","KIMI_CODE_SESSION_ID"]),o("antigravity","Antigravity runtime",["ANTIGRAVITY_SESSION_ID","ANTIGRAVITY_AGENT"]),o("openclaw","OpenClaw runtime",["OPENCLAW_SESSION_ID","OPENCLAW_GATEWAY"]),o("grok","Grok Build runtime",["GROK_SESSION_ID","GROK_AGENT","GROK_HOME"]);const t=[...new Map(i.map(e=>[e.targetId,e])).values()];if(t.length>1)return{targetId:"unknown",confidence:0,reason:`Conflicting runtime platform signals: ${t.map(({targetId:e})=>e).sort().join(", ")}`,reasonCode:"platform-target-ambiguous"};if(t.length===1){const e=t[0],a={"claude-code":"CLAUDE.md",codex:"AGENTS.md",cursor:".cursor",gemini:"GEMINI.md",vscode:".vscode",grok:"AGENTS.md"}[e.targetId],u=a?d(l(n.cwd,a)):!1;return{targetId:e.targetId,confidence:u?.98:.95,reason:`${e.signal} signal${u?` corroborated by ${a}`:""}`,reasonCode:"platform-target-runtime-signal"}}return r("VSCODE_PID")||n.env.TERM_PROGRAM==="vscode"?{targetId:"vscode",confidence:.75,reason:"VS Code runtime signal without a stronger agent runtime signal",reasonCode:"platform-target-runtime-signal"}:["AGENTS.md",".cursor",".cursorrules","CLAUDE.md",".vscode","GEMINI.md"].some(e=>d(l(n.cwd,e)))?{targetId:"unknown",confidence:0,reason:"Filesystem marker found without platform-owned runtime evidence",reasonCode:"platform-target-filesystem-only"}:{targetId:"unknown",confidence:0,reason:"No platform runtime signals detected",reasonCode:"platform-target-unknown"}}export{C as detectNativeHostAttestation,O as detectPlatform,D as isValidTargetId,f as normalizeTargetId};
@@ -10,6 +10,7 @@ Commands:
10
10
  activate Activate license key
11
11
  refresh-memory Create/repair canonical NEOCORTEX.md links and wrappers
12
12
  story-checkpoint Root-owned direct-*yolo commit/checkpoint boundary
13
+ native-agent Reserve and observe authorized native child dispatches
13
14
  config Inspect or change managed subagent approval mode
14
15
  cache-status Show cache and circuit breaker status
15
16
  update Update to latest version (use 'neocortex update' instead)
@@ -112,5 +113,5 @@ Invocation payload boundary:
112
113
 
113
114
  License:
114
115
  Licensed under BSL-1.1 (Business Source License 1.1)
115
- `.trim(),p=new Set(["pm","install","postinstall","preinstall","prepublish","postpublish","preuninstall","postuninstall","preprepare","prepare","postprepare"]);async function u(){const a=process.argv.slice(2),o=a[0];o&&p.has(o.toLowerCase())&&process.exit(0),(!o||o==="--help"||o==="-h")&&(console.log(l),process.exit(0)),(o==="--version"||o==="-v")&&(console.log(d()),process.stderr.write(`Licensed under BSL-1.1 (Business Source License 1.1)
116
- `),process.exit(0));const n=a.slice(1);switch(o){case"invoke":{const{invokeCliHandler:r}=await import("./commands/invoke.js"),t=await r(n);process.exit(t);break}case"activate":{const{activate:r}=await import("./commands/activate.js");let t,i,c=!1;for(let e=0;e<n.length;e++){const s=n[e];s==="--server-url"?i=n[++e]:s==="--non-interactive"?c=!0:s==="--help"||s==="-h"?(console.log(l),process.exit(0)):s.startsWith("-")||(t=s)}t||(console.error("Error: License key is required."),console.error("Usage: neocortex-client activate <license-key>"),console.error("Example: neocortex-client activate NX-PRO-ABC-123"),process.exit(1));try{const e=await r({licenseKey:t,serverUrl:i,nonInteractive:c});e.success?(console.log(e.message),process.exit(0)):(console.error(e.message),process.exit(1))}catch(e){const s=e instanceof Error?e.message:String(e);console.error(`Activation failed: ${s}`),process.exit(1)}break}case"cache-status":{console.log("Cache status requires an active client session."),console.log("Use this command within a running Neocortex client context."),process.exit(0);break}case"config":{const{configCliHandler:r}=await import("./commands/config.js"),t=await r(n);process.exit(t);break}case"refresh-memory":{const{refreshMemoryCliHandler:r}=await import("./commands/refresh-memory.js"),t=await r(n);process.exit(t);break}case"story-checkpoint":{const{storyCheckpointCliHandler:r}=await import("./commands/story-checkpoint.js"),t=await r(n);process.exit(t);break}case"update":{console.log("To update Neocortex, run:"),console.log(" neocortex update"),console.log(""),console.log("Or manually:"),console.log(" npm install -g @ornexus/neocortex@latest"),process.exit(0);break}default:console.error(`Unknown command: ${o}`),console.error('Run "neocortex-client --help" for usage information.'),process.exit(1)}}u().catch(a=>{console.error(`Fatal error: ${a instanceof Error?a.message:String(a)}`),process.exit(1)});
116
+ `.trim(),p=new Set(["pm","install","postinstall","preinstall","prepublish","postpublish","preuninstall","postuninstall","preprepare","prepare","postprepare"]);async function u(){const a=process.argv.slice(2),r=a[0];r&&p.has(r.toLowerCase())&&process.exit(0),(!r||r==="--help"||r==="-h")&&(console.log(l),process.exit(0)),(r==="--version"||r==="-v")&&(console.log(d()),process.stderr.write(`Licensed under BSL-1.1 (Business Source License 1.1)
117
+ `),process.exit(0));const s=a.slice(1);switch(r){case"invoke":{const{invokeCliHandler:o}=await import("./commands/invoke.js"),e=await o(s);process.exit(e);break}case"activate":{const{activate:o}=await import("./commands/activate.js");let e,i,c=!1;for(let t=0;t<s.length;t++){const n=s[t];n==="--server-url"?i=s[++t]:n==="--non-interactive"?c=!0:n==="--help"||n==="-h"?(console.log(l),process.exit(0)):n.startsWith("-")||(e=n)}e||(console.error("Error: License key is required."),console.error("Usage: neocortex-client activate <license-key>"),console.error("Example: neocortex-client activate NX-PRO-ABC-123"),process.exit(1));try{const t=await o({licenseKey:e,serverUrl:i,nonInteractive:c});t.success?(console.log(t.message),process.exit(0)):(console.error(t.message),process.exit(1))}catch(t){const n=t instanceof Error?t.message:String(t);console.error(`Activation failed: ${n}`),process.exit(1)}break}case"cache-status":{console.log("Cache status requires an active client session."),console.log("Use this command within a running Neocortex client context."),process.exit(0);break}case"config":{const{configCliHandler:o}=await import("./commands/config.js"),e=await o(s);process.exit(e);break}case"refresh-memory":{const{refreshMemoryCliHandler:o}=await import("./commands/refresh-memory.js"),e=await o(s);process.exit(e);break}case"story-checkpoint":{const{storyCheckpointCliHandler:o}=await import("./commands/story-checkpoint.js"),e=await o(s);process.exit(e);break}case"native-agent":{const{nativeAgentCliHandler:o}=await import("./commands/native-agent.js"),e=await o(s);process.exit(e);break}case"update":{console.log("To update Neocortex, run:"),console.log(" neocortex update"),console.log(""),console.log("Or manually:"),console.log(" npm install -g @ornexus/neocortex@latest"),process.exit(0);break}default:console.error(`Unknown command: ${r}`),console.error('Run "neocortex-client --help" for usage information.'),process.exit(1)}}u().catch(a=>{console.error(`Fatal error: ${a instanceof Error?a.message:String(a)}`),process.exit(1)});
@@ -15,6 +15,7 @@ import { type RunnerBootstrapPolicyDecision } from '../continuity/runner-bootstr
15
15
  import { type RunnerSchedulerBootstrapOptions, type RunnerSchedulerBootstrapResult } from '../runner/scheduler.js';
16
16
  import { type ContinuityProcessingSummaryCursorTarget } from '../continuity/continuity-client-state-store.js';
17
17
  import type { ProjectEvidenceEnvelope } from '../evidence/types.js';
18
+ import { detectNativeHostAttestation } from '../adapters/platform-detector.js';
18
19
  import { type InvokeEffectContext, type StrictReadOnlyInvokeEnvelope } from '../../../shared/dist/strict-readonly.js';
19
20
  import { type InvokeInputEvidenceV1, type InvokeInputEnvelopeV2, type InvokeInputSourceV2, type InvocationMalformedInputReasonV1, type InvocationAdmissionResultV1, type ProjectIdentityMigrationRequestV1 } from '../../../shared/dist/invocation/index.js';
20
21
  import { type P205TransientExecutionAuthority } from '../git/git-lifecycle-store.js';
@@ -426,6 +427,8 @@ export interface StateSnapshot {
426
427
  * adapter is unavailable for non-continuity commands.
427
428
  */
428
429
  readonly continuity?: unknown;
430
+ /** Request-only bounded native child observations from the private Git store. */
431
+ readonly nativeAgentDispatches?: unknown;
429
432
  /**
430
433
  * P158.06 -- optional client-side deterministic graph retrieval enrichment.
431
434
  * This is request-only metadata for server validation/consumption; it never
@@ -461,6 +464,7 @@ interface InvokeRequestBodyBase {
461
464
  readonly projectRoot: string;
462
465
  readonly stateSnapshot: StateSnapshot;
463
466
  readonly platformTarget?: string;
467
+ readonly nativeHostAttestation?: ReturnType<typeof detectNativeHostAttestation>;
464
468
  readonly projectId?: string;
465
469
  readonly projectIdentityMigration?: ProjectIdentityMigrationRequestV1;
466
470
  /** Public-safe proof that the transmitted/materialized args are byte-faithful. */