@ornexus/neocortex 4.60.59 → 4.60.61
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/dist/sbom.cdx.json +241 -82
- package/install.ps1 +1 -1
- package/install.sh +1 -1
- package/package.json +6 -2
- package/packages/client/dist/cli.js +37 -4
- package/packages/client/dist/commands/architecture-answers.d.ts +26 -0
- package/packages/client/dist/commands/architecture-answers.js +7 -0
- package/packages/client/dist/commands/architecture-memory-terminal.d.ts +21 -0
- package/packages/client/dist/commands/architecture-memory-terminal.js +2 -0
- package/packages/client/dist/commands/architecture-root-binding.d.ts +2 -0
- package/packages/client/dist/commands/architecture-root-binding.js +1 -0
- package/packages/client/dist/commands/invoke.d.ts +43 -2
- package/packages/client/dist/commands/invoke.js +98 -70
- package/packages/client/dist/commands/legacy-story-branch.d.ts +10 -0
- package/packages/client/dist/commands/legacy-story-branch.js +1 -0
- package/packages/client/dist/commands/legacy-story-pr.d.ts +18 -0
- package/packages/client/dist/commands/legacy-story-pr.js +1 -0
- package/packages/client/dist/commands/planning-diagnosis.d.ts +4 -0
- package/packages/client/dist/commands/planning-diagnosis.js +1 -0
- package/packages/client/dist/commands/planning-generation.d.ts +2 -0
- package/packages/client/dist/commands/planning-generation.js +1 -0
- package/packages/client/dist/commands/planning-research.d.ts +3 -0
- package/packages/client/dist/commands/planning-research.js +1 -0
- package/packages/client/dist/commands/refresh-memory.d.ts +10 -0
- package/packages/client/dist/commands/refresh-memory.js +3 -1
- package/packages/client/dist/commands/story-checkpoint.d.ts +1 -1
- package/packages/client/dist/commands/story-checkpoint.js +1 -1
- package/packages/client/dist/config/profile-directory.d.ts +2 -0
- package/packages/client/dist/config/profile-directory.js +1 -0
- package/packages/client/dist/config/secure-config.js +5 -5
- package/packages/client/dist/continuity/runner-bootstrap-policy.d.ts +1 -1
- package/packages/client/dist/continuity/runner-bootstrap-policy.js +1 -1
- package/packages/client/dist/generated/command-registry.generated.d.ts +11 -11
- package/packages/client/dist/generated/command-registry.generated.js +1 -1
- package/packages/client/dist/generated/public-projections.generated.d.ts +20 -20
- package/packages/client/dist/generated/public-projections.generated.js +1 -1
- package/packages/client/dist/git/direct-yolo-checkpoint.d.ts +9 -0
- package/packages/client/dist/git/direct-yolo-checkpoint.js +4 -4
- package/packages/client/dist/git/git-lifecycle-step-ids.d.ts +5 -0
- package/packages/client/dist/git/git-lifecycle-step-ids.js +1 -1
- package/packages/client/dist/git/git-lifecycle-store.d.ts +16 -0
- package/packages/client/dist/git/git-lifecycle-store.js +9 -4
- package/packages/client/dist/git/legacy-story-branch-checkpoint.d.ts +38 -0
- package/packages/client/dist/git/legacy-story-branch-checkpoint.js +9 -0
- package/packages/client/dist/git/legacy-story-branch-setup.d.ts +56 -0
- package/packages/client/dist/git/legacy-story-branch-setup.js +4 -0
- package/packages/client/dist/git/legacy-story-pr.d.ts +514 -0
- package/packages/client/dist/git/legacy-story-pr.js +62 -0
- package/packages/client/dist/git/secure-filesystem-boundary.d.ts +2 -0
- package/packages/client/dist/git/secure-filesystem-boundary.js +34 -7
- package/packages/client/dist/machine/fingerprint.js +2 -2
- package/packages/client/dist/memory/project-memory-writer.js +17 -17
- package/packages/client/dist/memory/shared-project-memory-types.d.ts +23 -13
- package/packages/client/dist/memory/shared-project-memory-types.js +2 -2
- package/packages/client/dist/migrations/state-json.d.ts +23 -1
- package/packages/client/dist/migrations/state-json.js +4 -4
- package/packages/client/dist/private-execution/delivery.d.ts +131 -3
- package/packages/client/dist/private-execution/delivery.js +2 -2
- package/packages/client/dist/private-execution/isolated-admission.d.ts +28 -1
- package/packages/client/dist/private-execution/isolated-admission.js +11 -2
- package/packages/client/dist/private-execution/isolated-session.js +2 -2
- package/packages/client/dist/private-execution/isolated-workspace.d.ts +8 -0
- package/packages/client/dist/private-execution/isolated-workspace.js +1 -1
- package/packages/client/dist/private-execution/pact-consumer-runtime.d.ts +19 -0
- package/packages/client/dist/private-execution/pact-consumer-runtime.js +3 -0
- package/packages/client/dist/private-execution/pact-test-source.d.ts +9 -0
- package/packages/client/dist/private-execution/pact-test-source.js +1 -0
- package/packages/client/dist/private-execution/pact-toolchain.d.ts +37 -0
- package/packages/client/dist/private-execution/pact-toolchain.js +3 -0
- package/packages/client/dist/private-execution/pact-write-set.d.ts +24 -0
- package/packages/client/dist/private-execution/pact-write-set.js +1 -0
- package/packages/client/dist/private-execution/planning-diagnosis-checkpoint.d.ts +38 -0
- package/packages/client/dist/private-execution/planning-diagnosis-checkpoint.js +5 -0
- package/packages/client/dist/private-execution/planning-generation-checkpoint.d.ts +34 -0
- package/packages/client/dist/private-execution/planning-generation-checkpoint.js +4 -0
- package/packages/client/dist/private-execution/planning-research-checkpoint.d.ts +38 -0
- package/packages/client/dist/private-execution/planning-research-checkpoint.js +4 -0
- package/packages/client/dist/private-execution/ux-source-validation.d.ts +2 -0
- package/packages/client/dist/private-execution/ux-source-validation.js +1 -0
- package/packages/client/dist/private-execution/ux-write-set.d.ts +30 -0
- package/packages/client/dist/private-execution/ux-write-set.js +2 -0
- package/packages/client/dist/resolvers/remote-resolver.d.ts +5 -22
- package/packages/client/dist/resolvers/remote-resolver.js +1 -1
- package/packages/client/dist/runner/project-identity.js +1 -1
- package/packages/client/dist/runner/scheduler.d.ts +20 -0
- package/packages/client/dist/runner/scheduler.js +7 -7
- package/packages/client/dist/state/project-state-snapshot.js +1 -1
- package/packages/client/dist/yolo/change-evidence-collector.d.ts +8 -0
- package/packages/client/dist/yolo/change-evidence-collector.js +1 -1
- package/packages/client/dist/yolo/spec-envelope-collector.d.ts +2 -0
- package/packages/client/dist/yolo/spec-envelope-collector.js +3 -3
- package/packages/client/dist/yoloop/invoke-hooks.js +7 -7
- package/packages/shared/dist/generated/command-registry.generated.js +12 -10
- package/packages/shared/dist/generated/invocation-schema.generated.js +14 -6
- package/packages/shared/dist/generated/public-projections.generated.js +18 -18
- package/packages/shared/dist/invocation/index.d.ts +1 -1
- package/packages/shared/dist/merge-readiness/c12-remote-observation.js +80 -0
- package/packages/shared/dist/planning/diagnosis-state.js +143 -0
- package/packages/shared/dist/yoloop/branch-unit.js +23 -1
- package/targets-stubs/antigravity/gemini.md +1 -1
- package/targets-stubs/antigravity/skill/SKILL.md +1 -1
- package/targets-stubs/claude-code/neocortex-root.agent.yaml +1 -1
- package/targets-stubs/claude-code/neocortex-root.md +2 -2
- package/targets-stubs/claude-code/neocortex.agent.yaml +1 -1
- package/targets-stubs/claude-code/neocortex.md +2 -2
- package/targets-stubs/codex/AGENTS.md +1 -1
- package/targets-stubs/cursor/agent.md +2 -2
- package/targets-stubs/gemini-cli/agent.md +2 -2
- package/targets-stubs/opencode/neocortex-root.md +1 -1
- package/targets-stubs/vscode/neocortex.agent.md +2 -2
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface LegacyStoryBranchCliOptions {
|
|
2
|
+
readonly action: 'setup' | 'accept';
|
|
3
|
+
readonly storyId: string;
|
|
4
|
+
readonly projectRoot: string;
|
|
5
|
+
readonly dryRun: boolean;
|
|
6
|
+
readonly issueNumber?: number;
|
|
7
|
+
readonly format: 'json' | 'plain';
|
|
8
|
+
}
|
|
9
|
+
export declare function parseLegacyStoryBranchArgs(args: readonly string[]): LegacyStoryBranchCliOptions;
|
|
10
|
+
export declare function legacyStoryBranchCliHandler(args: readonly string[]): Promise<number>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{resolve as h}from"node:path";import{planLegacyStoryBranchSetup as f,prepareLegacyStoryBranchSetup as y}from"../git/legacy-story-branch-setup.js";import{acceptLegacyStoryBranchC01 as g}from"../git/legacy-story-branch-checkpoint.js";function d(i){const e=i[0];if(e!=="setup"&&e!=="accept")throw new Error("legacy-branch-action-invalid");let t="",o=process.cwd(),l=!1,n,u="plain";const p=c=>{if(!/^[1-9][0-9]*$/.test(c))throw new Error("legacy-branch-issue-number-invalid");const r=Number(c);if(!Number.isSafeInteger(r))throw new Error("legacy-branch-issue-number-invalid");return r};for(let c=1;c<i.length;c++){const r=i[c],s=()=>i[++c]??"";if(r==="--story")t=s();else if(r.startsWith("--story="))t=r.slice(8);else if(r==="--project-root")o=s();else if(r.startsWith("--project-root="))o=r.slice(15);else if(r==="--dry-run")l=!0;else if(r==="--issue-number")n=p(s());else if(r.startsWith("--issue-number="))n=p(r.slice(15));else if(r==="--format"){const a=s();if(a!=="json"&&a!=="plain")throw new Error("legacy-branch-format-invalid");u=a}else if(r.startsWith("--format=")){const a=r.slice(9);if(a!=="json"&&a!=="plain")throw new Error("legacy-branch-format-invalid");u=a}else throw new Error("legacy-branch-argument-invalid")}if(!t)throw new Error("legacy-branch-story-required");if(!o)throw new Error("legacy-branch-project-root-required");if(e==="accept"&&(l||!Number.isSafeInteger(n)||n<=0))throw new Error("legacy-branch-accept-options-invalid");if(e==="setup"&&n!==void 0)throw new Error("legacy-branch-setup-options-invalid");return{action:e,storyId:t,projectRoot:h(o),dryRun:l,format:u,...n!==void 0?{issueNumber:n}:{}}}async function v(i){let e;try{e=d(i)}catch(o){return console.error(o instanceof Error?o.message:"legacy-branch-arguments-invalid"),1}const t=e.action==="accept"?await g({...e,issueNumber:e.issueNumber}):e.dryRun?f(e):await y(e);return e.format==="json"?console.log(JSON.stringify({action:e.action==="accept"?"accept":e.dryRun?"plan":"setup",...t})):t.ok?(console.log(`legacy-story-branch ${e.action==="accept"?"accept":e.dryRun?"plan":"setup"}: ok`),console.log(`branch=${t.value.branch}`),"worktreePath"in t.value&&console.log(`worktree=${t.value.worktreePath}`),"checkpointAccepted"in t.value&&console.log(`checkpoint=${t.value.checkpointAccepted?"accepted":"unaccepted"}`)):console.error(`legacy-story-branch: ${t.reasonCode}`),t.ok?0:1}export{v as legacyStoryBranchCliHandler,d as parseLegacyStoryBranchArgs};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface LegacyStoryPrCliOptions {
|
|
2
|
+
readonly action: 'commit-plan' | 'commit-accept' | 'sync-plan' | 'sync-accept' | 'plan' | 'create' | 'accept' | 'review-plan' | 'review-accept' | 'merge-plan' | 'merge-prepare' | 'merge-decision' | 'merge-debt-record' | 'merge-execute' | 'merge-reconcile' | 'post-merge-plan' | 'post-merge-accept';
|
|
3
|
+
readonly storyId: string;
|
|
4
|
+
readonly projectRoot: string;
|
|
5
|
+
readonly bodyFile?: string;
|
|
6
|
+
readonly reportFile?: string;
|
|
7
|
+
readonly prNumber?: number;
|
|
8
|
+
readonly authorize: boolean;
|
|
9
|
+
readonly authorizeReview: boolean;
|
|
10
|
+
readonly authorizePrUpdate: boolean;
|
|
11
|
+
readonly authorizeMerge: boolean;
|
|
12
|
+
readonly authorizePostMerge: boolean;
|
|
13
|
+
readonly authorizeSync: boolean;
|
|
14
|
+
readonly authorizeCommit: boolean;
|
|
15
|
+
readonly format: 'json' | 'plain';
|
|
16
|
+
}
|
|
17
|
+
export declare function parseLegacyStoryPrArgs(args: readonly string[]): LegacyStoryPrCliOptions;
|
|
18
|
+
export declare function legacyStoryPrCliHandler(args: readonly string[]): Promise<number>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{resolve as w}from"node:path";import{acceptLegacyStoryPrC10 as S,acceptLegacyStoryPrPostMergeC12 as $,acceptLegacyStoryPrReviewC11 as k,acceptLegacyStoryCommitC08 as C,acceptLegacyStorySyncC09 as z,createLegacyStoryPr as E,mergeLegacyStoryPrC12 as b,planLegacyStoryCommitC08 as P,planLegacyStoryPr as j,planLegacyStoryPrMergeC12 as L,planLegacyStoryPrMergeDecisionC12 as N,planLegacyStoryPrReview as M,planLegacyStoryPrPostMergeC12 as I,planLegacyStorySyncC09 as J,prepareLegacyStoryPrMergeC12 as O,recordLegacyStoryPrRemoteDebtC12 as x}from"../git/legacy-story-pr.js";function F(y){const e=y[0];if(e!=="commit-plan"&&e!=="commit-accept"&&e!=="sync-plan"&&e!=="sync-accept"&&e!=="plan"&&e!=="create"&&e!=="accept"&&e!=="review-plan"&&e!=="review-accept"&&e!=="merge-plan"&&e!=="merge-prepare"&&e!=="merge-decision"&&e!=="merge-debt-record"&&e!=="merge-execute"&&e!=="merge-reconcile"&&e!=="post-merge-plan"&&e!=="post-merge-accept")throw new Error("legacy-story-pr-action-invalid");let c="",r=process.cwd(),o="",a="",i=0,n=!1,s=!1,l=!1,p=!1,m=!1,f=!1,d=!1,v="plain";for(let h=1;h<y.length;h++){const t=y[h],g=()=>y[++h]??"";if(t==="--story")c=g();else if(t.startsWith("--story="))c=t.slice(8);else if(t==="--project-root")r=g();else if(t.startsWith("--project-root="))r=t.slice(15);else if(t==="--body-file")o=g();else if(t.startsWith("--body-file="))o=t.slice(12);else if(t==="--report-file")a=g();else if(t.startsWith("--report-file="))a=t.slice(14);else if(t==="--pr-number"||t.startsWith("--pr-number=")){const u=t==="--pr-number"?g():t.slice(12);if(!/^[1-9][0-9]*$/.test(u))throw new Error("legacy-story-pr-number-invalid");if(i=Number(u),!Number.isSafeInteger(i))throw new Error("legacy-story-pr-number-invalid")}else if(t==="--authorize-pr-create")n=!0;else if(t==="--authorize-review")s=!0;else if(t==="--authorize-pr-update")l=!0;else if(t==="--authorize-merge")p=!0;else if(t==="--authorize-post-merge")m=!0;else if(t==="--authorize-sync")f=!0;else if(t==="--authorize-commit")d=!0;else if(t==="--format"||t.startsWith("--format=")){const u=t==="--format"?g():t.slice(9);if(u!=="json"&&u!=="plain")throw new Error("legacy-story-pr-format-invalid");v=u}else throw new Error("legacy-story-pr-argument-invalid")}if(!c||!r)throw new Error("legacy-story-pr-target-required");if(e!=="post-merge-accept"&&m)throw new Error("legacy-story-pr-argument-invalid");if(e!=="sync-accept"&&f)throw new Error("legacy-story-pr-argument-invalid");if(e!=="commit-accept"&&d)throw new Error("legacy-story-pr-argument-invalid");if(e==="commit-plan"&&(n||s||l||p||o||a||i))throw new Error("legacy-story-pr-commit-plan-options-invalid");if(e==="commit-accept"&&(n||s||l||p||!d||o||a||i))throw new Error("legacy-story-pr-commit-accept-options-invalid");if(e==="sync-plan"&&(n||s||l||p||o||a||i))throw new Error("legacy-story-pr-sync-plan-options-invalid");if(e==="sync-accept"&&(n||s||l||p||!f||o||a||i))throw new Error("legacy-story-pr-sync-accept-options-invalid");if(e==="plan"&&(n||s||l||p||o||a||i))throw new Error("legacy-story-pr-plan-options-invalid");if(e==="create"&&(!n||s||l||p||!o||a||i))throw new Error("legacy-story-pr-create-options-invalid");if(e==="accept"&&(n||s||l||p||o||a||!i))throw new Error("legacy-story-pr-accept-options-invalid");if(e==="review-plan"&&(n||s||l||p||o||a||!i))throw new Error("legacy-story-pr-review-plan-options-invalid");if(e==="review-accept"&&(n||!s||l||p||o||!a||!i))throw new Error("legacy-story-pr-review-accept-options-invalid");if(e==="merge-plan"&&(n||s||l||p||o||a||!i))throw new Error("legacy-story-pr-merge-plan-options-invalid");if(e==="merge-prepare"&&(n||s||!l||p||o||a||!i))throw new Error("legacy-story-pr-merge-prepare-options-invalid");if(e==="merge-decision"&&(n||s||l||p||o||a||!i))throw new Error("legacy-story-pr-merge-decision-options-invalid");if(e==="merge-debt-record"&&(n||s||l||p||o||a||!i))throw new Error("legacy-story-pr-merge-debt-record-options-invalid");if(e==="merge-execute"&&(n||s||l||!p||o||a||!i))throw new Error("legacy-story-pr-merge-execute-options-invalid");if(e==="merge-reconcile"&&(n||s||l||p||o||a||!i))throw new Error("legacy-story-pr-merge-reconcile-options-invalid");if(e==="post-merge-plan"&&(n||s||l||p||o||a||!i))throw new Error("legacy-story-pr-post-merge-plan-options-invalid");if(e==="post-merge-accept"&&(n||s||l||p||!m||o||a||!i))throw new Error("legacy-story-pr-post-merge-accept-options-invalid");return{action:e,storyId:c,projectRoot:w(r),authorize:n,authorizeReview:s,authorizePrUpdate:l,authorizeMerge:p,authorizePostMerge:m,authorizeSync:f,authorizeCommit:d,format:v,...o?{bodyFile:w(o)}:{},...a?{reportFile:w(a)}:{},...i?{prNumber:i}:{}}}async function q(y){let e;try{e=F(y)}catch(r){return console.error(r instanceof Error?r.message:"legacy-story-pr-arguments-invalid"),1}if(e.action==="commit-plan"){const r=P(e);return e.format==="json"?console.log(JSON.stringify({action:e.action,...r})):r.ok?console.log(`legacy-story-pr commit-plan: staged-basis-confirmed checkpoint=unaccepted story=${r.value.storyId} paths=${r.value.changedPaths.length}`):console.error(`legacy-story-pr: ${r.reasonCode}`),r.ok?0:1}if(e.action==="commit-accept"){const r=await C({...e,authorize:e.authorizeCommit});return e.format==="json"?console.log(JSON.stringify({action:e.action,...r})):r.ok?console.log(`legacy-story-pr commit-accept: checkpoint=accepted story=${r.value.storyId} head=${r.value.checkpointHeadSha}`):console.error(`legacy-story-pr: ${r.reasonCode}`),r.ok?0:1}if(e.action==="sync-plan"){const r=J(e);return e.format==="json"?console.log(JSON.stringify({action:e.action,...r})):r.ok?console.log(`legacy-story-pr sync-plan: physical-basis-confirmed checkpoint=unaccepted story=${r.value.storyId} base=${r.value.baseSha}`):console.error(`legacy-story-pr: ${r.reasonCode}`),r.ok?0:1}if(e.action==="sync-accept"){const r=await z({...e,authorize:e.authorizeSync});return e.format==="json"?console.log(JSON.stringify({action:e.action,...r})):r.ok?console.log(`legacy-story-pr sync-accept: checkpoint=accepted story=${r.value.storyId} head=${r.value.checkpointHeadSha}`):console.error(`legacy-story-pr: ${r.reasonCode}`),r.ok?0:1}if(e.action==="merge-execute"){const r=await N({...e,prNumber:e.prNumber});if(!r.ok||!r.value.canMerge){const a=r.ok?"legacy-story-pr-merge-remote-debt-required":r.reasonCode;return e.format==="json"?console.log(JSON.stringify({action:e.action,ok:!1,reasonCode:a})):console.error(`legacy-story-pr: ${a}`),1}const o=await b({...e,prNumber:e.prNumber,authorize:e.authorizeMerge,rootDecision:r.value});return e.format==="json"?console.log(JSON.stringify({action:e.action,...o})):o.ok?console.log(`legacy-story-pr merge-execute: physical-merge-confirmed checkpoint=unaccepted story=${o.value.storyId} pr=${o.value.prNumber}`):console.error(`legacy-story-pr: ${o.reasonCode}`),o.ok?0:1}if(e.action==="merge-reconcile"){const r=await b({...e,prNumber:e.prNumber,authorize:!0});return e.format==="json"?console.log(JSON.stringify({action:e.action,...r})):r.ok?console.log(`legacy-story-pr merge-reconcile: physical-merge-confirmed checkpoint=unaccepted story=${r.value.storyId} pr=${r.value.prNumber}`):console.error(`legacy-story-pr: ${r.reasonCode}`),r.ok?0:1}if(e.action==="post-merge-plan"){const r=await I({...e,prNumber:e.prNumber});return e.format==="json"?console.log(JSON.stringify({action:e.action,...r})):r.ok?console.log(`legacy-story-pr post-merge-plan: physical-basis-confirmed checkpoint=unaccepted story=${r.value.storyId} pr=${r.value.prNumber}`):console.error(`legacy-story-pr: ${r.reasonCode}`),r.ok?0:1}if(e.action==="post-merge-accept"){const r=await $({...e,prNumber:e.prNumber,authorize:e.authorizePostMerge});return e.format==="json"?console.log(JSON.stringify({action:e.action,...r})):r.ok?console.log(`legacy-story-pr post-merge-accept: checkpoint=accepted story=${r.value.storyId} pr=${r.value.prNumber} issue=${r.value.issueNumber}`):console.error(`legacy-story-pr: ${r.reasonCode}`),r.ok?0:1}const c=e.action==="plan"?j(e):e.action==="create"?await E({...e,bodyFile:e.bodyFile}):e.action==="accept"?await S({...e,prNumber:e.prNumber}):e.action==="review-plan"?await M({...e,prNumber:e.prNumber}):e.action==="review-accept"?await k({...e,prNumber:e.prNumber,reportFile:e.reportFile,authorize:e.authorizeReview}):e.action==="merge-plan"?await L({...e,prNumber:e.prNumber}):e.action==="merge-decision"?await N({...e,prNumber:e.prNumber}):e.action==="merge-debt-record"?await x({...e,prNumber:e.prNumber}):await O({...e,prNumber:e.prNumber,authorize:e.authorizePrUpdate});if(e.format==="json")console.log(JSON.stringify({action:e.action,...c}));else if(c.ok){const r="canMerge"in c.value&&c.value.canMerge===!1;console.log(`legacy-story-pr ${e.action}: ${e.action==="merge-debt-record"?"journaled-not-registry":r?"debt-required":"ok"}`),console.log(`story=${c.value.storyId}${"branch"in c.value?` branch=${c.value.branch}`:""}`),r&&"reasonCodes"in c.value&&console.log(`reasons=${c.value.reasonCodes.join(",")}`),"number"in c.value&&console.log(`pr=${c.value.number} checkpoint=${c.value.checkpointAccepted?"accepted":"unaccepted"}`)}else console.error(`legacy-story-pr: ${c.reasonCode}`);return c.ok?0:1}export{q as legacyStoryPrCliHandler,F as parseLegacyStoryPrArgs};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** The root supplies reviewed structured evidence through stdin; no agent output is auto-accepted. */
|
|
2
|
+
export declare function planningDiagnosisCliHandler(args: readonly string[]): Promise<number>;
|
|
3
|
+
/** Injectable IO keeps success and redacted-error output verifiable in tests. */
|
|
4
|
+
export declare function planningDiagnosisCliHandlerWithIO(args: readonly string[], input: AsyncIterable<string | Buffer>, output: Pick<Console, 'log' | 'error'>): Promise<number>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{sealPlanningDiagnosis as t}from"../private-execution/planning-diagnosis-checkpoint.js";const a=64*1024;async function c(n){const o=[];let r=0;for await(const i of n){const e=Buffer.isBuffer(i)?i:Buffer.from(i);if(r+=e.length,r>a)throw new Error("planning-diagnosis-review-too-large");o.push(e)}if(r===0)throw new Error("planning-diagnosis-review-missing");return JSON.parse(Buffer.concat(o).toString("utf8"))}async function g(n){return l(n,process.stdin,console)}async function l(n,o,r){if(n[0]!=="seal"||n.length!==1&&n.length!==3||n.length===3&&n[1]!=="--project-root")return r.error("usage: planning-diagnosis seal [--project-root <path>] < review.json"),1;try{const i=await c(o),e=t(n.length===3?n[2]:process.cwd(),i);return r.log(JSON.stringify({ok:!0,epicId:e.epicId,diagnosisReceiptId:e.diagnosisReceiptId,qaEvidenceId:e.qaEvidenceId,publicSafe:!0})),0}catch(i){const e=i instanceof Error?i.message:"",s=/^planning-diagnosis-[a-z-]+$/.test(e)?e:"planning-diagnosis-seal-failed";return r.error(JSON.stringify({ok:!1,reasonCode:s,publicSafe:!0})),1}}export{g as planningDiagnosisCliHandler,l as planningDiagnosisCliHandlerWithIO};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare function planningGenerationCliHandler(args: readonly string[]): Promise<number>;
|
|
2
|
+
export declare function planningGenerationCliHandlerWithIO(args: readonly string[], input: AsyncIterable<string | Buffer>, output: Pick<Console, 'log' | 'error'>): Promise<number>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{sealPlanningGeneration as a}from"../private-execution/planning-generation-checkpoint.js";const s=64*1024;async function c(n){const o=[];let r=0;for await(const e of n){const t=Buffer.isBuffer(e)?e:Buffer.from(e);if(r+=t.length,r>s)throw new Error("planning-generation-review-too-large");o.push(t)}if(r===0)throw new Error("planning-generation-review-missing");return JSON.parse(Buffer.concat(o).toString("utf8"))}async function g(n){return l(n,process.stdin,console)}async function l(n,o,r){if(n[0]!=="seal"||n.length!==1&&n.length!==3||n.length===3&&n[1]!=="--project-root")return r.error("usage: planning-generation seal [--project-root <path>] < review.json"),1;try{const e=await c(o),t=a(n.length===3?n[2]:process.cwd(),e);return r.log(JSON.stringify({ok:!0,...t,publicSafe:!0})),0}catch(e){const t=e instanceof Error?e.message:"",i=/^planning-generation-[a-z-]+$/.test(t)?t:"planning-generation-seal-failed";return r.error(JSON.stringify({ok:!1,reasonCode:i,publicSafe:!0})),1}}export{g as planningGenerationCliHandler,l as planningGenerationCliHandlerWithIO};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/** The root supplies reviewed P02 evidence through stdin; no agent output is auto-accepted. */
|
|
2
|
+
export declare function planningResearchCliHandler(args: readonly string[]): Promise<number>;
|
|
3
|
+
export declare function planningResearchCliHandlerWithIO(args: readonly string[], input: AsyncIterable<string | Buffer>, output: Pick<Console, 'log' | 'error'>): Promise<number>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{sealPlanningResearch as o}from"../private-execution/planning-research-checkpoint.js";const s=64*1024;async function a(e){const c=[];let t=0;for await(const n of e){const r=Buffer.isBuffer(n)?n:Buffer.from(n);if(t+=r.length,t>s)throw new Error("planning-research-review-too-large");c.push(r)}if(t===0)throw new Error("planning-research-review-missing");return JSON.parse(Buffer.concat(c).toString("utf8"))}async function h(e){return l(e,process.stdin,console)}async function l(e,c,t){if(e[0]!=="seal"||e.length!==1&&e.length!==3||e.length===3&&e[1]!=="--project-root")return t.error("usage: planning-research seal [--project-root <path>] < review.json"),1;try{const n=await a(c),r=o(e.length===3?e[2]:process.cwd(),n);return t.log(JSON.stringify({ok:!0,epicId:r.epicId,researchReceiptId:r.researchReceiptId,qaEvidenceId:r.qaEvidenceId,publicSafe:!0})),0}catch(n){const r=n instanceof Error?n.message:"",i=/^planning-research-[a-z-]+$/.test(r)?r:"planning-research-seal-failed";return t.error(JSON.stringify({ok:!1,reasonCode:i,publicSafe:!0})),1}}export{h as planningResearchCliHandler,l as planningResearchCliHandlerWithIO};
|
|
@@ -4,8 +4,18 @@ export interface RefreshMemoryCliOptions {
|
|
|
4
4
|
readonly projectRoot: string;
|
|
5
5
|
readonly targetIds: readonly ProjectMemoryTargetId[];
|
|
6
6
|
readonly dryRun: boolean;
|
|
7
|
+
readonly verify?: boolean;
|
|
7
8
|
readonly memoryNotes?: readonly string[];
|
|
8
9
|
}
|
|
10
|
+
export interface ProjectMemoryVerification {
|
|
11
|
+
readonly schemaVersion: 'ProjectMemoryVerification/1';
|
|
12
|
+
readonly canonicalSha256: string;
|
|
13
|
+
readonly projectionSha256: string;
|
|
14
|
+
readonly fileCount: number;
|
|
15
|
+
readonly publicSafe: true;
|
|
16
|
+
}
|
|
9
17
|
export declare function parseRefreshMemoryArgs(args: readonly string[]): RefreshMemoryCliOptions;
|
|
10
18
|
export declare function refreshProjectMemoryTargets(options: RefreshMemoryCliOptions): readonly WriteProjectMemoryTargetFilesResult[];
|
|
19
|
+
/** Root-only, read-only physical check; this is not independent stage QA or server authority. */
|
|
20
|
+
export declare function verifyProjectMemoryTargets(options: RefreshMemoryCliOptions): ProjectMemoryVerification;
|
|
11
21
|
export declare function refreshMemoryCliHandler(args: readonly string[]): Promise<number>;
|
|
@@ -1 +1,3 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{createHash as m}from"node:crypto";import{lstatSync as w,readFileSync as f}from"node:fs";import{join as g,resolve as R}from"node:path";import{getProjectMemoryTarget as E,isProjectMemoryTargetId as b,listProjectMemoryTargets as u}from"../memory/shared-project-memory-types.js";import{writeProjectMemoryTargetFiles as v}from"../memory/project-memory-writer.js";function h(r){return(r??"").split(",").map(t=>t.trim()).filter(Boolean)}function M(r){let t=process.cwd(),c=!1,i=!1;const a=[],o=[];for(let s=0;s<r.length;s++){const e=r[s];if(e==="--dry-run"||e==="--preview")c=!0;else if(e==="--verify")i=!0,c=!0;else if(e==="--project-root")t=r[++s]??t;else if(e.startsWith("--project-root="))t=e.slice(15);else if(e==="--target"||e==="--targets")a.push(...h(r[++s]));else if(e.startsWith("--target="))a.push(...h(e.slice(9)));else if(e.startsWith("--targets="))a.push(...h(e.slice(10)));else if(e==="--note"||e==="--memory-note"||e==="--change"){const n=r[++s];n&&o.push(n)}else e.startsWith("--note=")?o.push(e.slice(7)):e.startsWith("--memory-note=")?o.push(e.slice(14)):e.startsWith("--change=")&&o.push(e.slice(9))}if(i&&(a.length>0||o.length>0))throw new Error("Project memory verification requires all targets and no update notes.");const l=a.length>0?a.map(s=>{if(!b(s))throw new Error(`Unknown project-memory target: ${s}`);return s}):["canonical",...u().map(s=>s.targetId)];return{projectRoot:R(t),targetIds:Array.from(new Set(l)),dryRun:c,verify:i,memoryNotes:o}}function d(r){return r.targetIds.map(t=>v({projectRoot:r.projectRoot,targetId:t,dryRun:r.dryRun,memoryNotes:r.memoryNotes??[]}))}function P(r){if(!r.verify||!r.dryRun||r.memoryNotes?.length||r.targetIds.join(",")!==["canonical",...u().map(n=>n.targetId)].join(","))throw new Error("Project memory verification requires the complete read-only target set.");const t=g(r.projectRoot,"NEOCORTEX.md");let c;try{c=w(t)}catch{throw new Error("Canonical project memory is missing or unsafe.")}if(!c.isFile()||c.isSymbolicLink())throw new Error("Canonical project memory must be a regular file.");const i=f(t,"utf8"),a="<!-- NEOCORTEX-MEMORY-START -->",o="<!-- NEOCORTEX-MEMORY-END -->",l=E("canonical").budget;if(i.split(a).length!==2||i.split(o).length!==2||i.indexOf(a)>=i.indexOf(o)||Buffer.byteLength(i,"utf8")>l.maxBytes||i.split(`
|
|
2
|
+
`).length>l.maxLines)throw new Error("Canonical project memory markers or budget are invalid.");const s=d(r).flatMap(n=>n.files);if(s.some(n=>n.changed||n.mode==="compatibility-materialized-fallback"||n.fallbackReason||n.remediationDebt))throw new Error("Project memory verification found stale or fallback targets.");let e;try{if(e=[...new Set(s.map(n=>n.relativeFile))].sort().map(n=>{const y=f(g(r.projectRoot,n)),p=s.find(j=>j.relativeFile===n).mode;return`${n}:${p}:${m("sha256").update(y).digest("hex")}`}),f(t,"utf8")!==i||d(r).some(n=>n.changed))throw new Error("project-memory-verification-race")}catch{throw new Error("Project memory changed during verification.")}return{schemaVersion:"ProjectMemoryVerification/1",canonicalSha256:m("sha256").update(i).digest("hex"),projectionSha256:m("sha256").update(e.join(`
|
|
3
|
+
`)).digest("hex"),fileCount:e.length,publicSafe:!0}}async function O(r){try{const t=M(r);if(t.verify){const a=P(t);return console.log(`Project memory verified: files=${a.fileCount} canonical_sha256=${a.canonicalSha256} projection_sha256=${a.projectionSha256}`),0}const i=d(t).flatMap(a=>a.files.map(o=>[o.changed?t.dryRun?"would-change":"changed":"unchanged",o.mode,o.relativeFile,o.fallbackReason?`warning=${o.fallbackReason}`:void 0,o.remediationDebt?`debt=${o.remediationDebt}`:void 0,o.reasonCodes&&o.reasonCodes.length>0?`reasons=${o.reasonCodes.join(",")}`:void 0].filter(Boolean).join(" ")));console.log(`${t.dryRun?"Project memory preview":"Project memory refreshed"}: ${t.projectRoot}`);for(const a of i)console.log(a);return 0}catch(t){return console.error(t instanceof Error?t.message:String(t)),1}}export{M as parseRefreshMemoryArgs,O as refreshMemoryCliHandler,d as refreshProjectMemoryTargets,P as verifyProjectMemoryTargets};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
type StoryCheckpointAction = 'setup' | 'handoff' | 'begin' | 'finalize' | 'recover';
|
|
1
|
+
type StoryCheckpointAction = 'setup' | 'accept-setup' | 'handoff' | 'begin' | 'finalize' | 'recover';
|
|
2
2
|
interface StoryCheckpointCliOptions {
|
|
3
3
|
readonly action: StoryCheckpointAction;
|
|
4
4
|
readonly storyId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{readFile as m}from"node:fs/promises";import{resolve as
|
|
1
|
+
import{readFile as m}from"node:fs/promises";import{resolve as d}from"node:path";import{acceptDirectYoloSetupCheckpoint as w,beginDirectYoloStoryCommit as k,finalizeDirectYoloStoryCheckpoint as y,issueDirectYoloSetupLeaseHandoff as g,prepareDirectYoloSetup as v,recoverLegacyDirectYoloStoryCheckpoint as S}from"../git/direct-yolo-checkpoint.js";function E(a){const e=a[0];if(e!=="setup"&&e!=="accept-setup"&&e!=="handoff"&&e!=="begin"&&e!=="finalize"&&e!=="recover")throw new Error("story-checkpoint-action-invalid");let r="",t=process.cwd(),i,p="origin",c=!1,u="plain",l,f;for(let h=1;h<a.length;h++){const o=a[h],n=()=>a[++h]??"";if(o==="--story")r=n();else if(o.startsWith("--story="))r=o.slice(8);else if(o==="--project-root")t=n()||t;else if(o.startsWith("--project-root="))t=o.slice(15);else if(o==="--commit")i=n();else if(o.startsWith("--commit="))i=o.slice(9);else if(o==="--remote")p=n();else if(o.startsWith("--remote="))p=o.slice(9);else if(o==="--push"||o==="--require-remote")c=!0;else if(o==="--setup-handoff-session")l=n();else if(o.startsWith("--setup-handoff-session="))l=o.slice(24);else if(o==="--setup-handoff-token-file")f=n();else if(o.startsWith("--setup-handoff-token-file="))f=o.slice(27);else if(o==="--format"){const s=n();if(s!=="json"&&s!=="plain")throw new Error("story-checkpoint-format-invalid");u=s}else if(o.startsWith("--format=")){const s=o.slice(9);if(s!=="json"&&s!=="plain")throw new Error("story-checkpoint-format-invalid");u=s}else throw new Error("story-checkpoint-argument-invalid")}if(!r)throw new Error("story-checkpoint-story-required");if(e==="recover"&&!i)throw new Error("story-checkpoint-commit-required");if(e==="recover"&&!c)throw new Error("story-checkpoint-remote-proof-required");if(e==="finalize"&&!c)throw new Error("story-checkpoint-push-required");if(e==="begin"&&(i||c||p!=="origin"))throw new Error("story-checkpoint-option-invalid");if((e==="setup"||e==="accept-setup"||e==="handoff")&&(i||c||p!=="origin"))throw new Error("story-checkpoint-option-invalid");if(e==="finalize"&&i)throw new Error("story-checkpoint-option-invalid");if(l===void 0!=(f===void 0))throw new Error("story-checkpoint-setup-handoff-incomplete");if(e!=="begin"&&(l||f))throw new Error("story-checkpoint-option-invalid");return{action:e,storyId:r,projectRoot:d(t),commitSha:i,remote:p,push:c,format:u,...l?{setupHandoffSessionId:l}:{},...f?{setupHandoffTokenFile:d(f)}:{}}}async function W(a){let e;try{e=E(a)}catch(i){return console.error(i instanceof Error?i.message:"story-checkpoint-arguments-invalid"),1}let r;if(e.setupHandoffSessionId&&e.setupHandoffTokenFile)try{r={sessionId:e.setupHandoffSessionId,token:(await m(e.setupHandoffTokenFile,"utf8")).trim()}}catch{return console.error("story-checkpoint-setup-handoff-read-failed"),1}const t=e.action==="setup"?await v(e):e.action==="accept-setup"?await w(e):e.action==="handoff"?await g(e):e.action==="begin"?await k({...e,...r?{setupLeaseHandoff:r}:{}}):e.action==="finalize"?await y(e):await S({...e,commitSha:e.commitSha});if(e.format==="json")console.log(JSON.stringify({action:e.action,...t},null,2));else if(t.ok)if(console.log(`story-checkpoint ${e.action}: ok`),e.action==="begin"&&"trailers"in t.value)for(const i of t.value.trailers)console.log(i);else"headSha"in t.value&&console.log(`head=${t.value.headSha}`);else console.error(`story-checkpoint ${e.action}: ${t.reasonCode}`);return t.ok?0:1}export{E as parseStoryCheckpointArgs,W as storyCheckpointCliHandler};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{homedir as o}from"node:os";import{basename as n,isAbsolute as i,join as t,normalize as c}from"node:path";function s(){const r=process.env.NEOCORTEX_PROFILE_DIR;if(r===void 0)return t(o(),".neocortex");const e=c(r);if(!i(r)||/[\r\n\0]/.test(r)||n(e)!==".neocortex")throw new Error("neocortex-profile-dir-invalid");return e}export{s as neocortexProfileDirectory};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import{existsSync as
|
|
1
|
+
import{existsSync as p,readFileSync as R,writeFileSync as S,mkdirSync as L,chmodSync as y}from"node:fs";import{execSync as u}from"node:child_process";import{join as d}from"node:path";import{encrypt as I,decrypt as g}from"../cache/crypto-utils.js";import{getMachineFingerprint as l}from"../machine/fingerprint.js";import{DEFAULT_SERVER_URL as x}from"../constants.js";import{neocortexProfileDirectory as K}from"./profile-directory.js";const s=K(),a=d(s,"config.json"),C=["api","neocortex","ornexus","com"].join("."),f=1;function m(r,t={}){const e=l(t);return I(r,e)}function O(r,t={}){try{const e=l(t);return g(r,e).plaintext}catch{return null}}function _(r){try{if(process.platform==="win32"){const t=process.env.USERNAME||process.env.USER||"";if(!t)return;u(`icacls "${r}" /inheritance:r /grant:r "${t}:(F)"`,{stdio:"pipe",timeout:5e3})}else y(r,384)}catch{}}function h(r){try{if(process.platform==="win32"){const t=process.env.USERNAME||process.env.USER||"";if(!t)return;u(`icacls "${r}" /inheritance:r /grant:r "${t}:(OI)(CI)(F)"`,{stdio:"pipe",timeout:5e3})}else y(r,448)}catch{}}let v=!1;function F(r){if(v)return;const t=r.serverUrl;if(!t)return;/^https?:\/\/(localhost|127\.0\.0\.1|0\.0\.0\.0)(:\d+)?/i.test(t)&&(v=!0,console.warn(`
|
|
2
2
|
[!] Warning: connected to local server (`+t+`).
|
|
3
3
|
To use production, run: neocortex activate YOUR-LICENSE-KEY
|
|
4
4
|
Get yours at https://neocortex.sh/portal/login
|
|
5
|
-
`))}function w(r){const t=r.match(/^(https?:\/\/)([^/]+)(.*)$/i);if(!t)return null;const[,e,o,n=""]=t;return o.toLowerCase()!==C?null:`${e}api.neocortex.sh${n}`}function
|
|
5
|
+
`))}function w(r){const t=r.match(/^(https?:\/\/)([^/]+)(.*)$/i);if(!t)return null;const[,e,o,n=""]=t;return o.toLowerCase()!==C?null:`${e}api.neocortex.sh${n}`}function D(r={}){try{if(!p(a))return null;const t=R(a,"utf-8"),e=JSON.parse(t.replace(/^\uFEFF/,""));if(e.licenseKey&&!e.encryptedLicenseKey){const c=m(e.licenseKey,r),i={...e},U=i.licenseKey;return delete i.licenseKey,i.encryptedLicenseKey=c,i.configVersion||(i.configVersion=f),r.strictReadOnly||E(i),{serverUrl:e.serverUrl,mode:e.mode,machineId:e.machineId,activatedAt:e.activatedAt,tier:e.tier,licenseKey:U,keyType:e.keyType}}let o;if(e.encryptedLicenseKey){const c=O(e.encryptedLicenseKey,r);c&&(o=c)}const n={serverUrl:e.serverUrl,mode:e.mode,machineId:e.machineId,activatedAt:e.activatedAt,tier:e.tier,licenseKey:o,keyType:e.keyType};if(e.machineId&&!o&&e.encryptedLicenseKey){const c=l();e.machineId!==c&&console.warn(`
|
|
6
6
|
[!] Machine fingerprint changed (was: ${e.machineId.slice(0,12)}..., now: ${c.slice(0,12)}...).
|
|
7
7
|
Your encrypted credentials are no longer valid.
|
|
8
8
|
Re-activate with: neocortex activate YOUR-LICENSE-KEY
|
|
9
|
-
`)}if(F(n),n.serverUrl&&!process.env.NEOCORTEX_SERVER_URL&&/^https?:\/\/(localhost|127\.0\.0\.1|0\.0\.0\.0)(:\d+)?/i.test(n.serverUrl)){const i=
|
|
9
|
+
`)}if(F(n),n.serverUrl&&!process.env.NEOCORTEX_SERVER_URL&&/^https?:\/\/(localhost|127\.0\.0\.1|0\.0\.0\.0)(:\d+)?/i.test(n.serverUrl)){const i=x;return console.warn(`[neocortex] Auto-repairing serverUrl: ${n.serverUrl} -> ${i}
|
|
10
10
|
[neocortex] To keep localhost, set NEOCORTEX_SERVER_URL=${n.serverUrl}
|
|
11
|
-
`),{...n,serverUrl:i}}if(n.serverUrl&&!process.env.NEOCORTEX_SERVER_URL){const c=w(n.serverUrl);if(c)return{...n,serverUrl:c}}return n}catch{return null}}function E(r){L(s,{recursive:!0}),h(s);const t=
|
|
12
|
-
`,"utf-8"),_(a)}function
|
|
11
|
+
`),{...n,serverUrl:i}}if(n.serverUrl&&!process.env.NEOCORTEX_SERVER_URL){const c=w(n.serverUrl);if(c)return{...n,serverUrl:c}}return n}catch{return null}}function E(r){L(s,{recursive:!0}),h(s);const t=d(s,"cache");p(t)&&h(t),S(a,JSON.stringify(r,null,2)+`
|
|
12
|
+
`,"utf-8"),_(a)}function G(r){const t=m(r.licenseKey),e=r.keyType??(r.licenseKey.startsWith("nxk_")?"api_key":"license"),o={configVersion:f,serverUrl:r.serverUrl,mode:r.mode,machineId:r.machineId,activatedAt:r.activatedAt,tier:r.tier,encryptedLicenseKey:t,keyType:e};E(o)}export{O as decryptLicenseKey,m as encryptLicenseKey,D as loadSecureConfig,G as saveSecureConfig,h as setSecureDirPermissions,_ as setSecureFilePermissions};
|
|
@@ -18,7 +18,7 @@ export declare const RUNNER_BOOTSTRAP_POLICY_REASON_CODES: {
|
|
|
18
18
|
};
|
|
19
19
|
export type RunnerBootstrapPolicyReasonCode = typeof RUNNER_BOOTSTRAP_POLICY_REASON_CODES[keyof typeof RUNNER_BOOTSTRAP_POLICY_REASON_CODES];
|
|
20
20
|
export type RunnerBootstrapCommandKind = 'goal' | 'loop' | 'jobs' | 'runner' | 'unknown';
|
|
21
|
-
export type RunnerBootstrapOperation = 'create' | 'start' | 'resume' | 'activate' | 'run' | 'run-once' | 'restart' | 'continue' | 'unpause' | 'status' | 'cancel' | 'pause' | 'report' | 'reports' | 'log' | 'logs' | 'tick' | 'unknown' | 'none';
|
|
21
|
+
export type RunnerBootstrapOperation = 'create' | 'start' | 'resume' | 'activate' | 'run' | 'run-once' | 'restart' | 'continue' | 'unpause' | 'status' | 'doctor' | 'cancel' | 'pause' | 'report' | 'reports' | 'log' | 'logs' | 'tick' | 'unknown' | 'none';
|
|
22
22
|
export type RunnerBootstrapPolicyAction = 'required' | 'optional' | 'skipped';
|
|
23
23
|
export type RunnerBootstrapFailurePolicy = 'fail-closed' | 'fail-open' | 'not-applicable';
|
|
24
24
|
export interface RunnerBootstrapCommandIntent {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e={REQUIRED_DURABLE_COMMAND:"runner-bootstrap-required-durable-command",REQUIRED_UNKNOWN_GOAL_LOOP_OPERATION:"runner-bootstrap-required-unknown-goal-loop-operation",OPTIONAL_OPERATOR_COMMAND:"runner-bootstrap-optional-operator-command",SKIPPED_BOOTSTRAP_IN_PROGRESS:"runner-bootstrap-skipped-bootstrap-in-progress",SKIPPED_RUNNER_PLATFORM:"runner-bootstrap-skipped-runner-platform",SKIPPED_GOAL_LOOP_TICK:"runner-bootstrap-skipped-goal-loop-tick",SKIPPED_JOBS_COMMAND:"runner-bootstrap-skipped-jobs-command",SKIPPED_RUNNER_COMMAND:"runner-bootstrap-skipped-runner-command",SKIPPED_NON_CONTINUITY_COMMAND:"runner-bootstrap-skipped-non-continuity-command"},P=new Set(["goal","goals","durable-goal","continuity-goal","59"]),N=new Set(["loop","loops","durable-loop","continuity-loop","60"]),f=new Set(["jobs","job","continuity-jobs","61"]),R=new Set(["runner","neocortex-runner","continuity-runner","62"]),E=new Map([["goal-tick","goal"],["loop-tick","loop"]]),s=new Set(["create","start","resume","activate","run","run-once","restart","continue","unpause"]),p=new Set(["status","cancel","pause","report","reports","log","logs"]),S=new Set([...s,...p,"tick"]),A=/^@?(?:goal|loop|job)-[a-z0-9][a-z0-9._-]*$/i;function b(r){const o=
|
|
1
|
+
const e={REQUIRED_DURABLE_COMMAND:"runner-bootstrap-required-durable-command",REQUIRED_UNKNOWN_GOAL_LOOP_OPERATION:"runner-bootstrap-required-unknown-goal-loop-operation",OPTIONAL_OPERATOR_COMMAND:"runner-bootstrap-optional-operator-command",SKIPPED_BOOTSTRAP_IN_PROGRESS:"runner-bootstrap-skipped-bootstrap-in-progress",SKIPPED_RUNNER_PLATFORM:"runner-bootstrap-skipped-runner-platform",SKIPPED_GOAL_LOOP_TICK:"runner-bootstrap-skipped-goal-loop-tick",SKIPPED_JOBS_COMMAND:"runner-bootstrap-skipped-jobs-command",SKIPPED_RUNNER_COMMAND:"runner-bootstrap-skipped-runner-command",SKIPPED_NON_CONTINUITY_COMMAND:"runner-bootstrap-skipped-non-continuity-command"},P=new Set(["goal","goals","durable-goal","continuity-goal","59"]),N=new Set(["loop","loops","durable-loop","continuity-loop","60"]),f=new Set(["jobs","job","continuity-jobs","61"]),R=new Set(["runner","neocortex-runner","continuity-runner","62"]),E=new Map([["goal-tick","goal"],["loop-tick","loop"]]),s=new Set(["create","start","resume","activate","run","run-once","restart","continue","unpause"]),p=new Set(["status","doctor","cancel","pause","report","reports","log","logs"]),S=new Set([...s,...p,"tick"]),A=/^@?(?:goal|loop|job)-[a-z0-9][a-z0-9._-]*$/i;function b(r){const o=T(r),n=l(o[0]);if(!n)return u("unknown","none",!1);const a=E.get(n);if(a)return u(a,"tick",!0);const i=d(n);return i==="unknown"?u("unknown","none",!1):u(i,O(_(o)),!0)}function k(r,o={}){if(C(o))return t(r,e.SKIPPED_BOOTSTRAP_IN_PROGRESS,"runner bootstrap skipped because a bootstrap guard is active.");if(D(o.platformTarget)==="runner")return t(r,e.SKIPPED_RUNNER_PLATFORM,"runner bootstrap skipped for runner platform invocation.");if((r.kind==="goal"||r.kind==="loop")&&r.operation==="tick")return t(r,e.SKIPPED_GOAL_LOOP_TICK,`runner bootstrap skipped for ${r.kind} tick operation.`);if(r.kind==="jobs")return t(r,e.SKIPPED_JOBS_COMMAND,"runner bootstrap skipped for jobs command.");if(r.kind==="runner")return t(r,e.SKIPPED_RUNNER_COMMAND,"runner bootstrap skipped for runner command.");if(r.kind!=="goal"&&r.kind!=="loop")return t(r,e.SKIPPED_NON_CONTINUITY_COMMAND,"runner bootstrap skipped for non-continuity command.");if(p.has(r.operation))return{action:"optional",failurePolicy:"fail-open",command:r.kind,operation:r.operation,reasonCodes:[e.OPTIONAL_OPERATOR_COMMAND],publicSummary:`runner bootstrap optional for ${r.kind} operator command.`,publicSafe:!0};const n=s.has(r.operation)||r.operation==="none"?e.REQUIRED_DURABLE_COMMAND:e.REQUIRED_UNKNOWN_GOAL_LOOP_OPERATION;return{action:"required",failurePolicy:"fail-closed",command:r.kind,operation:r.operation==="none"?"create":r.operation,reasonCodes:[n],publicSummary:`runner bootstrap required for durable ${r.kind} command.`,publicSafe:!0}}function M(r,o={}){return k(b(r),o)}function t(r,o,n){return{action:"skipped",failurePolicy:"not-applicable",command:r.kind,operation:r.operation,reasonCodes:[o],publicSummary:n,publicSafe:!0}}function u(r,o,n){return{kind:r,operation:o,recognizedAlias:n,publicSafe:!0}}function d(r){return P.has(r)?"goal":N.has(r)?"loop":f.has(r)?"jobs":R.has(r)?"runner":"unknown"}function O(r){const o=l(r);return o?S.has(o)?o:"unknown":"none"}function _(r){const o=r[1];if(o)return A.test(o)?r[2]:o}function T(r){return r.trim().split(/\s+/).filter(Boolean).slice(0,3)}function l(r){return(r??"").trim().toLowerCase().replace(/^\*/,"")}function D(r){return(r??"").trim().toLowerCase()}function C(r){return r.bootstrapInProgress?!0:c(r.environment?.NEOCORTEX_RUNNER_BOOTSTRAP_IN_PROGRESS)||c(r.environment?.NEOCORTEX_BOOTSTRAP_IN_PROGRESS)}function c(r){return/^(1|true|yes|on)$/i.test(r??"")}export{e as RUNNER_BOOTSTRAP_POLICY_REASON_CODES,k as classifyRunnerBootstrapPolicy,M as classifyRunnerBootstrapPolicyFromArgs,b as parseRunnerBootstrapCommandIntent};
|
|
@@ -2,35 +2,35 @@
|
|
|
2
2
|
export { PUBLIC_PROJECTION_BUNDLE, PUBLIC_PROJECTION_GENERATION_ID, PUBLIC_PROJECTION_BUNDLE_HASH } from './public-projections.generated.js';
|
|
3
3
|
export declare const COMMAND_REGISTRY_SCHEMA_VERSION: 1;
|
|
4
4
|
export declare const COMMAND_REGISTRY_VERSION: "1.0.0";
|
|
5
|
-
export declare const COMMAND_REGISTRY_CHECKSUM: "
|
|
5
|
+
export declare const COMMAND_REGISTRY_CHECKSUM: "a631fa17a24972952ef0270880105bfc4d1a6be17e8622c5916265d945fcb69d";
|
|
6
6
|
export declare const COMMAND_REGISTRY_PROJECTION_MANIFEST: {
|
|
7
7
|
readonly schemaVersion: 1;
|
|
8
8
|
readonly registryVersion: "1.0.0";
|
|
9
|
-
readonly registryChecksum: "
|
|
9
|
+
readonly registryChecksum: "a631fa17a24972952ef0270880105bfc4d1a6be17e8622c5916265d945fcb69d";
|
|
10
10
|
readonly projections: readonly [{
|
|
11
11
|
readonly kind: "admin";
|
|
12
12
|
readonly entryCount: 62;
|
|
13
|
-
readonly sha256: "
|
|
13
|
+
readonly sha256: "e155547000e8f0607360144555b10cb90f222f37b010120eb2e97ac802ce821f";
|
|
14
14
|
}, {
|
|
15
15
|
readonly kind: "client";
|
|
16
16
|
readonly entryCount: 62;
|
|
17
|
-
readonly sha256: "
|
|
17
|
+
readonly sha256: "e155547000e8f0607360144555b10cb90f222f37b010120eb2e97ac802ce821f";
|
|
18
18
|
}, {
|
|
19
19
|
readonly kind: "docs";
|
|
20
20
|
readonly entryCount: 62;
|
|
21
|
-
readonly sha256: "
|
|
21
|
+
readonly sha256: "e155547000e8f0607360144555b10cb90f222f37b010120eb2e97ac802ce821f";
|
|
22
22
|
}, {
|
|
23
23
|
readonly kind: "metrics";
|
|
24
24
|
readonly entryCount: 62;
|
|
25
|
-
readonly sha256: "
|
|
25
|
+
readonly sha256: "e155547000e8f0607360144555b10cb90f222f37b010120eb2e97ac802ce821f";
|
|
26
26
|
}, {
|
|
27
27
|
readonly kind: "server";
|
|
28
28
|
readonly entryCount: 67;
|
|
29
|
-
readonly sha256: "
|
|
29
|
+
readonly sha256: "ffd28ece4ed51da16af392cbd97cfe5580433f925f926dabe1d409387126f1ab";
|
|
30
30
|
}, {
|
|
31
31
|
readonly kind: "shared";
|
|
32
32
|
readonly entryCount: 67;
|
|
33
|
-
readonly sha256: "
|
|
33
|
+
readonly sha256: "5c820b21ff7e1d72b867a7a6927d292b404479c1c311be26840d3672b0c056fb";
|
|
34
34
|
}];
|
|
35
35
|
};
|
|
36
36
|
export declare const GENERATED_CLIENT_COMMANDS: readonly [{
|
|
@@ -659,7 +659,7 @@ export declare const GENERATED_CLIENT_COMMANDS: readonly [{
|
|
|
659
659
|
readonly es: "Commit y push";
|
|
660
660
|
readonly "pt-BR": "Commit e push";
|
|
661
661
|
};
|
|
662
|
-
readonly examples: readonly ["@neocortex *commit @docs/stories/P126.01.story.md"];
|
|
662
|
+
readonly examples: readonly ["@neocortex *commit", "@neocortex *commit @docs/stories/P126.01.story.md"];
|
|
663
663
|
readonly id: "commit";
|
|
664
664
|
readonly inputShape: "story";
|
|
665
665
|
readonly mode: "step";
|
|
@@ -999,7 +999,7 @@ export declare const GENERATED_CLIENT_COMMANDS: readonly [{
|
|
|
999
999
|
readonly es: "Generar tests Pact (consumer + provider) de openapi.yaml";
|
|
1000
1000
|
readonly "pt-BR": "Gerar testes Pact (consumer + provider) de openapi.yaml";
|
|
1001
1001
|
};
|
|
1002
|
-
readonly examples: readonly ["@neocortex *generate-pacts"];
|
|
1002
|
+
readonly examples: readonly ["@neocortex *generate-pacts", "@neocortex *generate-pacts P126"];
|
|
1003
1003
|
readonly id: "generate-pacts";
|
|
1004
1004
|
readonly inputShape: "standalone";
|
|
1005
1005
|
readonly mode: "step";
|
|
@@ -2661,7 +2661,7 @@ export declare const GENERATED_CLIENT_COMMANDS: readonly [{
|
|
|
2661
2661
|
readonly policy: {
|
|
2662
2662
|
readonly billingClass: "non-billable";
|
|
2663
2663
|
readonly idempotencyClass: "logical-supported";
|
|
2664
|
-
readonly minimumTier: "
|
|
2664
|
+
readonly minimumTier: "pro";
|
|
2665
2665
|
readonly mutationClass: "stateful";
|
|
2666
2666
|
readonly privilege: "authenticated";
|
|
2667
2667
|
readonly quotaClass: "none";
|