@ornexus/neocortex 4.60.58 → 4.60.60

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 (113) hide show
  1. package/dist/sbom.cdx.json +241 -82
  2. package/install.ps1 +1 -1
  3. package/install.sh +1 -1
  4. package/package.json +6 -2
  5. package/packages/client/dist/cli.js +37 -4
  6. package/packages/client/dist/commands/architecture-answers.d.ts +26 -0
  7. package/packages/client/dist/commands/architecture-answers.js +7 -0
  8. package/packages/client/dist/commands/architecture-memory-terminal.d.ts +21 -0
  9. package/packages/client/dist/commands/architecture-memory-terminal.js +2 -0
  10. package/packages/client/dist/commands/architecture-root-binding.d.ts +2 -0
  11. package/packages/client/dist/commands/architecture-root-binding.js +1 -0
  12. package/packages/client/dist/commands/invoke.d.ts +43 -2
  13. package/packages/client/dist/commands/invoke.js +98 -70
  14. package/packages/client/dist/commands/legacy-story-branch.d.ts +10 -0
  15. package/packages/client/dist/commands/legacy-story-branch.js +1 -0
  16. package/packages/client/dist/commands/legacy-story-pr.d.ts +18 -0
  17. package/packages/client/dist/commands/legacy-story-pr.js +1 -0
  18. package/packages/client/dist/commands/planning-diagnosis.d.ts +4 -0
  19. package/packages/client/dist/commands/planning-diagnosis.js +1 -0
  20. package/packages/client/dist/commands/planning-generation.d.ts +2 -0
  21. package/packages/client/dist/commands/planning-generation.js +1 -0
  22. package/packages/client/dist/commands/planning-research.d.ts +3 -0
  23. package/packages/client/dist/commands/planning-research.js +1 -0
  24. package/packages/client/dist/commands/refresh-memory.d.ts +10 -0
  25. package/packages/client/dist/commands/refresh-memory.js +3 -1
  26. package/packages/client/dist/commands/story-checkpoint.d.ts +1 -1
  27. package/packages/client/dist/commands/story-checkpoint.js +1 -1
  28. package/packages/client/dist/config/profile-directory.d.ts +2 -0
  29. package/packages/client/dist/config/profile-directory.js +1 -0
  30. package/packages/client/dist/config/secure-config.js +5 -5
  31. package/packages/client/dist/continuity/runner-bootstrap-policy.d.ts +1 -1
  32. package/packages/client/dist/continuity/runner-bootstrap-policy.js +1 -1
  33. package/packages/client/dist/generated/command-registry.generated.d.ts +11 -11
  34. package/packages/client/dist/generated/command-registry.generated.js +1 -1
  35. package/packages/client/dist/generated/public-projections.generated.d.ts +20 -20
  36. package/packages/client/dist/generated/public-projections.generated.js +1 -1
  37. package/packages/client/dist/git/direct-yolo-checkpoint.d.ts +9 -0
  38. package/packages/client/dist/git/direct-yolo-checkpoint.js +4 -4
  39. package/packages/client/dist/git/git-lifecycle-step-ids.d.ts +5 -0
  40. package/packages/client/dist/git/git-lifecycle-step-ids.js +1 -1
  41. package/packages/client/dist/git/git-lifecycle-store.d.ts +16 -0
  42. package/packages/client/dist/git/git-lifecycle-store.js +9 -4
  43. package/packages/client/dist/git/legacy-story-branch-checkpoint.d.ts +38 -0
  44. package/packages/client/dist/git/legacy-story-branch-checkpoint.js +9 -0
  45. package/packages/client/dist/git/legacy-story-branch-setup.d.ts +56 -0
  46. package/packages/client/dist/git/legacy-story-branch-setup.js +4 -0
  47. package/packages/client/dist/git/legacy-story-pr.d.ts +514 -0
  48. package/packages/client/dist/git/legacy-story-pr.js +62 -0
  49. package/packages/client/dist/git/secure-filesystem-boundary.d.ts +2 -0
  50. package/packages/client/dist/git/secure-filesystem-boundary.js +34 -7
  51. package/packages/client/dist/machine/fingerprint.js +2 -2
  52. package/packages/client/dist/memory/project-memory-writer.js +17 -17
  53. package/packages/client/dist/memory/shared-project-memory-types.d.ts +23 -13
  54. package/packages/client/dist/memory/shared-project-memory-types.js +2 -2
  55. package/packages/client/dist/migrations/state-json.d.ts +23 -1
  56. package/packages/client/dist/migrations/state-json.js +4 -4
  57. package/packages/client/dist/private-execution/delivery.d.ts +131 -3
  58. package/packages/client/dist/private-execution/delivery.js +2 -2
  59. package/packages/client/dist/private-execution/isolated-admission.d.ts +28 -1
  60. package/packages/client/dist/private-execution/isolated-admission.js +11 -2
  61. package/packages/client/dist/private-execution/isolated-session.js +2 -2
  62. package/packages/client/dist/private-execution/isolated-workspace.d.ts +8 -0
  63. package/packages/client/dist/private-execution/isolated-workspace.js +1 -1
  64. package/packages/client/dist/private-execution/pact-consumer-runtime.d.ts +19 -0
  65. package/packages/client/dist/private-execution/pact-consumer-runtime.js +3 -0
  66. package/packages/client/dist/private-execution/pact-test-source.d.ts +9 -0
  67. package/packages/client/dist/private-execution/pact-test-source.js +1 -0
  68. package/packages/client/dist/private-execution/pact-toolchain.d.ts +37 -0
  69. package/packages/client/dist/private-execution/pact-toolchain.js +3 -0
  70. package/packages/client/dist/private-execution/pact-write-set.d.ts +24 -0
  71. package/packages/client/dist/private-execution/pact-write-set.js +1 -0
  72. package/packages/client/dist/private-execution/planning-diagnosis-checkpoint.d.ts +38 -0
  73. package/packages/client/dist/private-execution/planning-diagnosis-checkpoint.js +5 -0
  74. package/packages/client/dist/private-execution/planning-generation-checkpoint.d.ts +34 -0
  75. package/packages/client/dist/private-execution/planning-generation-checkpoint.js +4 -0
  76. package/packages/client/dist/private-execution/planning-research-checkpoint.d.ts +38 -0
  77. package/packages/client/dist/private-execution/planning-research-checkpoint.js +4 -0
  78. package/packages/client/dist/private-execution/ux-source-validation.d.ts +2 -0
  79. package/packages/client/dist/private-execution/ux-source-validation.js +1 -0
  80. package/packages/client/dist/private-execution/ux-write-set.d.ts +30 -0
  81. package/packages/client/dist/private-execution/ux-write-set.js +2 -0
  82. package/packages/client/dist/resolvers/remote-resolver.d.ts +5 -22
  83. package/packages/client/dist/resolvers/remote-resolver.js +1 -1
  84. package/packages/client/dist/runner/project-identity.js +1 -1
  85. package/packages/client/dist/runner/scheduler.d.ts +20 -0
  86. package/packages/client/dist/runner/scheduler.js +7 -7
  87. package/packages/client/dist/state/project-state-snapshot.js +1 -1
  88. package/packages/client/dist/yolo/change-evidence-collector.d.ts +8 -0
  89. package/packages/client/dist/yolo/change-evidence-collector.js +1 -1
  90. package/packages/client/dist/yolo/spec-envelope-collector.d.ts +2 -0
  91. package/packages/client/dist/yolo/spec-envelope-collector.js +3 -3
  92. package/packages/client/dist/yoloop/invoke-hooks.js +7 -7
  93. package/packages/client/dist/yoloop/shared-yoloop-types.d.ts +15 -1
  94. package/packages/client/dist/yoloop/yoloop-client-state-store.d.ts +5 -1
  95. package/packages/client/dist/yoloop/yoloop-client-state-store.js +1 -1
  96. package/packages/shared/dist/generated/command-registry.generated.js +12 -10
  97. package/packages/shared/dist/generated/invocation-schema.generated.js +14 -6
  98. package/packages/shared/dist/generated/public-projections.generated.js +18 -18
  99. package/packages/shared/dist/invocation/index.d.ts +1 -1
  100. package/packages/shared/dist/merge-readiness/c12-remote-observation.js +80 -0
  101. package/packages/shared/dist/planning/diagnosis-state.js +143 -0
  102. package/packages/shared/dist/yoloop/branch-unit.js +23 -1
  103. package/targets-stubs/antigravity/gemini.md +1 -1
  104. package/targets-stubs/antigravity/skill/SKILL.md +1 -1
  105. package/targets-stubs/claude-code/neocortex-root.agent.yaml +1 -1
  106. package/targets-stubs/claude-code/neocortex-root.md +2 -2
  107. package/targets-stubs/claude-code/neocortex.agent.yaml +1 -1
  108. package/targets-stubs/claude-code/neocortex.md +2 -2
  109. package/targets-stubs/codex/AGENTS.md +1 -1
  110. package/targets-stubs/cursor/agent.md +2 -2
  111. package/targets-stubs/gemini-cli/agent.md +2 -2
  112. package/targets-stubs/opencode/neocortex-root.md +1 -1
  113. package/targets-stubs/vscode/neocortex.agent.md +2 -2
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Physical P01 state projection shared by the server policy and the client CAS.
3
+ * This is deliberately not an acceptance decision: callers must establish the
4
+ * durable claim, independently accepted checkpoint and exact source revision.
5
+ */
6
+ import { createHash } from 'node:crypto';
7
+ import { isDeepStrictEqual } from 'node:util';
8
+ function record(value) {
9
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
10
+ }
11
+ const SCALARS = ['goal', 'problem', 'desiredOutcome', 'rawIntent'];
12
+ const LISTS = ['context', 'users', 'surfaces', 'constraints', 'assumptions', 'risks', 'nonGoals',
13
+ 'validationExpectations', 'debtRefs', 'repositoryEvidencePaths', 'journeyIds', 'screenIds',
14
+ 'storybookStoryIds', 'backendContractIds', 'featureBlockerIds', 'remediationRefs'];
15
+ const BOOLEANS = ['uiScope', 'remediationStory'];
16
+ const EXAMPLE_KEYS = ['id', 'title', 'actor', 'given', 'when', 'then', 'source',
17
+ 'coveredRequirement', 'expectedValidation'];
18
+ const CONTRACT_KEYS = ['id', 'kind', 'description', 'path'];
19
+ const UNSAFE = /(?:[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}|https?:\/\/(?:localhost|127\.0\.0\.1|10\.\d+\.\d+\.\d+|192\.168\.\d+\.\d+|172\.(?:1[6-9]|2\d|3[0-1])\.\d+\.\d+|[^\s/]*internal[^\s/]*)\S*|sk-[A-Za-z0-9_-]{12,})/i;
20
+ const INLINE_SECRET = /(?:token|api[_-]?key|secret|password|credential|license[_-]?key)\s*[:=]\s*\S+/i;
21
+ const PRIVATE_CONTENT = /(?:customer\s+pii|private\s+prompt|system\s+prompt|developer\s+prompt|raw\s+vendor\s+corpus|begin\s+raw\s+logs?)/i;
22
+ function safeText(value, max = 512) {
23
+ if (typeof value !== 'string' || value.length > max
24
+ || /[\x00-\x08\x0b\x0c\x0e-\x1f]/.test(value)
25
+ || UNSAFE.test(value) || INLINE_SECRET.test(value) || PRIVATE_CONTENT.test(value)) {
26
+ throw new Error('planning-unsafe-text');
27
+ }
28
+ return value;
29
+ }
30
+ function allowedKeys(value, allowed) {
31
+ if (Object.keys(value).some((key) => !allowed.includes(key)))
32
+ throw new Error('planning-unknown-field');
33
+ }
34
+ /** Stable revision input shared by the server and the physical root checkpoint. */
35
+ export function canonicalPlanningIntake(value) {
36
+ if (!record(value) || Buffer.byteLength(JSON.stringify(value)) > 16_384) {
37
+ throw new Error('planning-intake-shape');
38
+ }
39
+ allowedKeys(value, [...SCALARS, ...LISTS, ...BOOLEANS, 'examples', 'contracts']);
40
+ const result = {};
41
+ for (const key of SCALARS)
42
+ if (value[key] !== undefined)
43
+ result[key] = safeText(value[key]);
44
+ for (const key of LISTS)
45
+ if (value[key] !== undefined) {
46
+ const entries = value[key];
47
+ if (!Array.isArray(entries) || entries.length > 32)
48
+ throw new Error('planning-list-shape');
49
+ result[key] = entries.map((entry) => safeText(entry, 256));
50
+ }
51
+ for (const key of BOOLEANS)
52
+ if (value[key] !== undefined) {
53
+ if (typeof value[key] !== 'boolean')
54
+ throw new Error('planning-boolean-shape');
55
+ result[key] = value[key];
56
+ }
57
+ for (const [key, allowed] of [['examples', EXAMPLE_KEYS], ['contracts', CONTRACT_KEYS]]) {
58
+ if (value[key] === undefined)
59
+ continue;
60
+ const entries = value[key];
61
+ if (!Array.isArray(entries) || entries.length > 16)
62
+ throw new Error('planning-record-list-shape');
63
+ result[key] = entries.map((entry) => {
64
+ if (!record(entry))
65
+ throw new Error('planning-record-shape');
66
+ allowedKeys(entry, allowed);
67
+ const copy = {};
68
+ for (const field of allowed)
69
+ if (entry[field] !== undefined)
70
+ copy[field] = safeText(entry[field], 256);
71
+ return copy;
72
+ });
73
+ }
74
+ return result;
75
+ }
76
+ export function planningIntakeRevision(value) {
77
+ return createHash('sha256').update(JSON.stringify(canonicalPlanningIntake(value))).digest('hex');
78
+ }
79
+ /** A consistency digest only. The caller must separately establish independent QA. */
80
+ export function createPlanningReceiptV1(input) {
81
+ const summary = input.artifactSummary;
82
+ if (!/^P[1-9][0-9]{0,11}$/.test(input.epicId)
83
+ || !/^[a-f0-9]{64}$/.test(input.intakeRevision)
84
+ || input.accepted !== true || !['diagnosis', 'research'].includes(input.kind)
85
+ || typeof summary !== 'string' || !summary.trim() || summary.length > 1024
86
+ || /[\x00-\x08\x0b\x0c\x0e-\x1f]/.test(summary)
87
+ || /^\s*(?:docs\/|\.neocortex\/|https?:\/)/i.test(summary)
88
+ || UNSAFE.test(summary) || INLINE_SECRET.test(summary) || PRIVATE_CONTENT.test(summary)
89
+ || input.kind === 'diagnosis' && input.predecessorReceiptId !== undefined
90
+ || input.kind === 'research' && !/^[a-f0-9]{64}$/.test(input.predecessorReceiptId ?? '')) {
91
+ throw new Error('planning-receipt-invalid');
92
+ }
93
+ const base = { schemaVersion: 1, kind: input.kind, epicId: input.epicId,
94
+ intakeRevision: input.intakeRevision, artifactSummary: summary,
95
+ artifactDigest: createHash('sha256').update(summary).digest('hex'),
96
+ ...(input.predecessorReceiptId ? { predecessorReceiptId: input.predecessorReceiptId } : {}),
97
+ accepted: true };
98
+ return { ...base, receiptId: createHash('sha256').update(JSON.stringify(base)).digest('hex') };
99
+ }
100
+ export function projectDiagnosedEpicState(currentState, input) {
101
+ const checkpoint = input.checkpoint;
102
+ if (currentState.schema_version !== 1 || !record(currentState.epics) || !record(currentState.stories)
103
+ || !/^P[1-9][0-9]{0,11}$/.test(input.epicId)
104
+ || !/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/.test(input.claimId)
105
+ || !record(checkpoint) || checkpoint.schemaVersion !== 1
106
+ || checkpoint.epicId !== input.epicId || !record(checkpoint.intake)
107
+ || typeof checkpoint.intake.goal !== 'string'
108
+ || !checkpoint.intake.goal.trim() || checkpoint.intake.goal.length > 512
109
+ || typeof checkpoint.intakeRevision !== 'string'
110
+ || !/^[a-f0-9]{64}$/.test(checkpoint.intakeRevision)
111
+ || !record(checkpoint.diagnosisReceipt)) {
112
+ throw new Error('planning-diagnosis-identity-invalid');
113
+ }
114
+ const ledger = currentState.epic_id_ledger === undefined
115
+ ? { schema_version: 1, reserved_ids: [] }
116
+ : currentState.epic_id_ledger;
117
+ if (!record(ledger) || ledger.schema_version !== 1
118
+ || !Array.isArray(ledger.reserved_ids) || ledger.reserved_ids.length > 4096
119
+ || ledger.reserved_ids.some((id) => typeof id !== 'string' || !/^P[1-9][0-9]{0,11}$/.test(id))
120
+ || new Set(ledger.reserved_ids).size !== ledger.reserved_ids.length) {
121
+ throw new Error('planning-diagnosis-ledger-invalid');
122
+ }
123
+ const epic = {
124
+ id: input.epicId, title: checkpoint.intake.goal, status: 'diagnosed',
125
+ source: 'create-epic', stories: [],
126
+ createEpicPlanningClaim: { schemaVersion: 1, claimId: input.claimId, epicId: input.epicId },
127
+ createEpicPlanning: checkpoint,
128
+ };
129
+ const epics = currentState.epics;
130
+ if (Object.hasOwn(epics, input.epicId)) {
131
+ if (isDeepStrictEqual(epics[input.epicId], epic) && ledger.reserved_ids.includes(input.epicId)) {
132
+ return currentState;
133
+ }
134
+ throw new Error('planning-diagnosis-epic-conflict');
135
+ }
136
+ if (ledger.reserved_ids.includes(input.epicId))
137
+ throw new Error('planning-diagnosis-ledger-conflict');
138
+ return {
139
+ ...currentState,
140
+ epics: { ...epics, [input.epicId]: epic },
141
+ epic_id_ledger: { ...ledger, reserved_ids: [...ledger.reserved_ids, input.epicId] },
142
+ };
143
+ }
@@ -9,6 +9,13 @@ const LEGACY_INTEGRATION_STEPS = new Set([
9
9
  'step-c-11-review-pr',
10
10
  'step-c-12-merge-pr',
11
11
  ]);
12
+ /** Do not let a stale epic story list hide physical progress in the snapshot. */
13
+ export function resolveEpicStoryIds(epicId, listedStoryIds, snapshotStoryIds) {
14
+ return [...new Set([
15
+ ...(listedStoryIds ?? []),
16
+ ...snapshotStoryIds.filter((id) => id.startsWith(`${epicId}.`)),
17
+ ])];
18
+ }
12
19
  /** Resolve once from persisted state. Existing Git progress always wins. */
13
20
  export function resolveBranchUnit(epic, stories) {
14
21
  const legacyProgress = stories.some(hasLegacyStoryGitProgress);
@@ -64,7 +71,8 @@ export function reconcileStoryCheckpoint(current, requested) {
64
71
  current.graphRevision === requested.graphRevision &&
65
72
  current.claimRevision === requested.claimRevision &&
66
73
  sameEvidenceReceipt(current.qaReceipt, requested.qaReceipt) &&
67
- sameEvidenceReceipt(current.reviewReceipt, requested.reviewReceipt))
74
+ sameEvidenceReceipt(current.reviewReceipt, requested.reviewReceipt) &&
75
+ JSON.stringify(current.reviewReconciliation ?? null) === JSON.stringify(requested.reviewReconciliation ?? null))
68
76
  return { kind: 'reused', checkpoint: current };
69
77
  return { kind: 'blocked', reasonCode: 'checkpoint-idempotency-conflict' };
70
78
  }
@@ -183,6 +191,7 @@ function validateCheckpointEvidence(checkpoint) {
183
191
  else if (review.schemaVersion !== 1 || review.kind !== 'story_review_evidence'
184
192
  || review.producer !== 'root-commit-range-review' || review.verdict !== checkpoint.reviewVerdict
185
193
  || !evidenceBindingMatches(checkpoint, review) || !isHash(review.sourceEvidenceDigest)
194
+ || (review.reviewArtifactDigest !== undefined && !isHash(review.reviewArtifactDigest))
186
195
  || !nonEmpty(review.receiptRef) || review.receiptRef !== `story-review:${review.sourceEvidenceDigest}`
187
196
  || !Number.isFinite(Date.parse(review.reviewedAt))) {
188
197
  errors.push('checkpoint-review-evidence-invalid');
@@ -201,6 +210,19 @@ function validateCheckpointEvidence(checkpoint) {
201
210
  if (Date.parse(review.reviewedAt) < Date.parse(qa.checkedAt))
202
211
  errors.push('checkpoint-review-before-qa');
203
212
  }
213
+ const reconciliation = checkpoint.reviewReconciliation;
214
+ if (reconciliation && (!qa || !review || reconciliation.schemaVersion !== 1
215
+ || reconciliation.kind !== 'historical_review_reconciliation'
216
+ || reconciliation.storyId !== checkpoint.storyId || reconciliation.epicId !== checkpoint.epicId
217
+ || reconciliation.checkpointHeadSha !== checkpoint.headSha
218
+ || !isSha(reconciliation.approvalCommitSha)
219
+ || !isHash(reconciliation.approvalArtifactDigest) || !isHash(reconciliation.sourceEvidenceDigest)
220
+ || reconciliation.qaReceiptRef !== qa.receiptRef || reconciliation.reviewReceiptRef !== review.receiptRef
221
+ || reconciliation.receiptRef !== `story-review-reconciliation:${reconciliation.sourceEvidenceDigest}`
222
+ || !checkpoint.receiptRefs.includes(reconciliation.receiptRef)
223
+ || !Number.isFinite(Date.parse(reconciliation.reviewedAt)))) {
224
+ errors.push('checkpoint-review-reconciliation-invalid');
225
+ }
204
226
  return errors;
205
227
  }
206
228
  function evidenceBindingMatches(checkpoint, evidence) {
@@ -1,4 +1,4 @@
1
- # 🧠 Neocortex v4.60.58 | OrNexus Team
1
+ # 🧠 Neocortex v4.60.60 | OrNexus Team
2
2
 
3
3
  This project uses Neocortex, a Development Orchestrator.
4
4
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: neocortex
3
- description: "🧠 Neocortex v4.60.58 | OrNexus Team"
3
+ description: "🧠 Neocortex v4.60.60 | OrNexus Team"
4
4
  ---
5
5
 
6
6
  <!--
@@ -4,7 +4,7 @@ agent:
4
4
  name: 'Neocortex Root Agent'
5
5
  title: 'Development Orchestrator (Root)'
6
6
  icon: '>'
7
- version: '4.60.58'
7
+ version: '4.60.60'
8
8
  architecture: 'thin-client'
9
9
  module: stand-alone
10
10
  hasSidecar: false
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: neocortex-root
3
- description: "🧠 Neocortex Root Agent v4.60.58 | OrNexus Team"
3
+ description: "🧠 Neocortex Root Agent v4.60.60 | OrNexus Team"
4
4
  model: opus
5
5
  color: blue
6
6
  tools:
@@ -108,7 +108,7 @@ SEMPRE que este agente for invocado, imprima o banner abaixo como PRIMEIRO outpu
108
108
  ┌────────────────────────────────────────────────────────────┐
109
109
  │ │
110
110
  │ ####### N E O C O R T E X │
111
- │ ### ######## v4.60.58 │
111
+ │ ### ######## v4.60.60 │
112
112
  │ ######### ##### │
113
113
  │ ## ############## Development Orchestrator │
114
114
  │ ## ### ###### ## OrNexus Team │
@@ -4,7 +4,7 @@ agent:
4
4
  name: 'Neocortex'
5
5
  title: 'Development Orchestrator'
6
6
  icon: '>'
7
- version: '4.60.58'
7
+ version: '4.60.60'
8
8
  architecture: 'thin-client'
9
9
  module: stand-alone
10
10
  hasSidecar: false
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: neocortex
3
- description: "🧠 Neocortex v4.60.58 | OrNexus Team"
3
+ description: "🧠 Neocortex v4.60.60 | OrNexus Team"
4
4
  model: opus
5
5
  color: blue
6
6
  permissionMode: bypassPermissions
@@ -104,7 +104,7 @@ SEMPRE que este agente for invocado, imprima o banner abaixo como PRIMEIRO outpu
104
104
  ┌────────────────────────────────────────────────────────────┐
105
105
  │ │
106
106
  │ ####### N E O C O R T E X │
107
- │ ### ######## v4.60.58 │
107
+ │ ### ######## v4.60.60 │
108
108
  │ ######### ##### │
109
109
  │ ## ############## Development Orchestrator │
110
110
  │ ## ### ###### ## OrNexus Team │
@@ -28,7 +28,7 @@ Codex built-in commands or actions.
28
28
 
29
29
  <!-- END: Plugin Conflict Prevention -->
30
30
 
31
- # Neocortex v4.60.58 | OrNexus Team
31
+ # Neocortex v4.60.60 | OrNexus Team
32
32
 
33
33
  You are a Development Orchestrator. All orchestration logic is delivered by the remote Neocortex server.
34
34
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: neocortex
3
- description: "🧠 Neocortex v4.60.58 | OrNexus Team"
3
+ description: "🧠 Neocortex v4.60.60 | OrNexus Team"
4
4
  model: inherit
5
5
  readonly: false
6
6
  is_background: false
@@ -64,7 +64,7 @@ SEMPRE que este agente for invocado, imprima o banner abaixo como PRIMEIRO outpu
64
64
  ┌────────────────────────────────────────────────────────────┐
65
65
  │ │
66
66
  │ ####### N E O C O R T E X │
67
- │ ### ######## v4.60.58 │
67
+ │ ### ######## v4.60.60 │
68
68
  │ ######### ##### │
69
69
  │ ## ############## Development Orchestrator │
70
70
  │ ## ### ###### ## OrNexus Team │
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: neocortex-root
3
- description: "🧠 Neocortex v4.60.58 | OrNexus Team"
3
+ description: "🧠 Neocortex v4.60.60 | OrNexus Team"
4
4
  kind: local
5
5
  tools:
6
6
  # File operations (Gemini CLI built-ins)
@@ -62,7 +62,7 @@ SEMPRE que este agente for invocado, imprima o banner abaixo como PRIMEIRO outpu
62
62
  ┌────────────────────────────────────────────────────────────┐
63
63
  │ │
64
64
  │ ####### N E O C O R T E X │
65
- │ ### ######## v4.60.58 │
65
+ │ ### ######## v4.60.60 │
66
66
  │ ######### ##### │
67
67
  │ ## ############## Development Orchestrator │
68
68
  │ ## ### ###### ## OrNexus Team │
@@ -58,7 +58,7 @@ explicit server opt-in rather than a local assumption.
58
58
  ┌────────────────────────────────────────────────────────────┐
59
59
  │ │
60
60
  │ ####### N E O C O R T E X │
61
- │ ### ######## v4.60.58 │
61
+ │ ### ######## v4.60.60 │
62
62
  │ ######### ##### │
63
63
  │ ## ############## Development Orchestrator │
64
64
  │ ## ### ###### ## OrNexus Team │
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: "neocortex"
3
- description: "Neocortex v4.60.58 | OrNexus Team"
3
+ description: "Neocortex v4.60.60 | OrNexus Team"
4
4
  tools:
5
5
  # Read / Edit (built-in tool sets)
6
6
  - read
@@ -68,7 +68,7 @@ SEMPRE que este agente for invocado, imprima o banner abaixo como PRIMEIRO outpu
68
68
  ┌────────────────────────────────────────────────────────────┐
69
69
  │ │
70
70
  │ ####### N E O C O R T E X │
71
- │ ### ######## v4.60.58 │
71
+ │ ### ######## v4.60.60 │
72
72
  │ ######### ##### │
73
73
  │ ## ############## Development Orchestrator │
74
74
  │ ## ### ###### ## OrNexus Team │