nexus-agents 2.81.4 → 2.83.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/dist/{child-mcp-config-HVGU73XG.js → child-mcp-config-XVPIO5HV.js} +2 -2
  2. package/dist/{chunk-XZECNG2Q.js → chunk-2W4QJ27D.js} +3 -3
  3. package/dist/{chunk-BQ4YXGGQ.js → chunk-3ACDP4E6.js} +124 -2
  4. package/dist/chunk-3ACDP4E6.js.map +1 -0
  5. package/dist/{chunk-BZVYU4YD.js → chunk-3ASED5PR.js} +4 -4
  6. package/dist/{chunk-S5HMID6I.js → chunk-3GJAAENS.js} +4 -4
  7. package/dist/chunk-3GJAAENS.js.map +1 -0
  8. package/dist/{chunk-6M44ZXB4.js → chunk-3WUVWZUC.js} +2 -2
  9. package/dist/{chunk-R2VJY7Z4.js → chunk-4BXQ2OZY.js} +148 -103
  10. package/dist/chunk-4BXQ2OZY.js.map +1 -0
  11. package/dist/{chunk-M5ABED6T.js → chunk-54UXPJVM.js} +2 -2
  12. package/dist/{chunk-5TM5VL23.js → chunk-5T6SYCH2.js} +2 -2
  13. package/dist/{chunk-YW72ORKM.js → chunk-6WDJ3IE4.js} +3 -3
  14. package/dist/{chunk-EGK4RZV5.js → chunk-AFPHR72D.js} +2 -2
  15. package/dist/{chunk-F7N2T53R.js → chunk-AINOJRZX.js} +12 -23
  16. package/dist/chunk-AINOJRZX.js.map +1 -0
  17. package/dist/{chunk-ITMLH7TF.js → chunk-BZUEUD4G.js} +3 -3
  18. package/dist/{chunk-WVSQGGAH.js → chunk-FHGDJKCZ.js} +16 -13
  19. package/dist/{chunk-WVSQGGAH.js.map → chunk-FHGDJKCZ.js.map} +1 -1
  20. package/dist/{chunk-ZBABWKEA.js → chunk-FI77TGBY.js} +2 -2
  21. package/dist/{chunk-7J7PNOJQ.js → chunk-HFOQKCD2.js} +22 -5
  22. package/dist/chunk-HFOQKCD2.js.map +1 -0
  23. package/dist/{chunk-PPV23O3J.js → chunk-L362KRSU.js} +2 -2
  24. package/dist/{chunk-2GW2FZXY.js → chunk-NLPMYBIV.js} +50 -22
  25. package/dist/chunk-NLPMYBIV.js.map +1 -0
  26. package/dist/{chunk-M6KXR4LO.js → chunk-PMLVZXAE.js} +1246 -1068
  27. package/dist/chunk-PMLVZXAE.js.map +1 -0
  28. package/dist/{chunk-FAU7LVIG.js → chunk-PPBZQKRP.js} +28 -15
  29. package/dist/chunk-PPBZQKRP.js.map +1 -0
  30. package/dist/{chunk-7JLSKX3U.js → chunk-Q6PZMGLU.js} +2 -2
  31. package/dist/{chunk-RGKUBFTE.js → chunk-RVRXKNND.js} +3 -3
  32. package/dist/{chunk-HFSSADUV.js → chunk-RXVH52UI.js} +44 -28
  33. package/dist/{chunk-HFSSADUV.js.map → chunk-RXVH52UI.js.map} +1 -1
  34. package/dist/{chunk-B3MCX46I.js → chunk-U6LDVJS7.js} +2 -2
  35. package/dist/{chunk-K7WUEKCD.js → chunk-WGSRH5EQ.js} +3 -3
  36. package/dist/{chunk-M3KVQK54.js → chunk-WJFUTRHX.js} +2 -2
  37. package/dist/{chunk-JSQV2EOZ.js → chunk-YO27YAEX.js} +3 -3
  38. package/dist/{chunk-ZAY5M2AN.js → chunk-Z64MSLEK.js} +2 -2
  39. package/dist/{chunk-AMFVUDWI.js → chunk-ZIWEEVMI.js} +2 -2
  40. package/dist/{chunk-2HBQ6XXA.js → chunk-ZM5JKJHI.js} +9 -60
  41. package/dist/chunk-ZM5JKJHI.js.map +1 -0
  42. package/dist/{cli-circuit-breaker-NUZGOAVD.js → cli-circuit-breaker-Y26NPPNO.js} +4 -4
  43. package/dist/cli.js +460 -379
  44. package/dist/cli.js.map +1 -1
  45. package/dist/codebase-search-ZFJUVMVR.js +8 -0
  46. package/dist/{composite-router-4CF3P5D4.js → composite-router-X2ZYIEHH.js} +2 -2
  47. package/dist/{consensus-vote-7PLEGFWZ.js → consensus-vote-KZ6UURUI.js} +11 -11
  48. package/dist/{context-retriever-R5W4I4IB.js → context-retriever-QY4FNTDZ.js} +5 -5
  49. package/dist/{doctor-deep-7JTGI33O.js → doctor-deep-2E2GBMYR.js} +3 -3
  50. package/dist/expert-bridge-FHPWDFJX.js +13 -0
  51. package/dist/{factory-E2CKCYIK.js → factory-STNVY3Y3.js} +4 -4
  52. package/dist/{factory-DD2FPM3H.js → factory-W6KROBFN.js} +5 -5
  53. package/dist/index.d.ts +117 -61
  54. package/dist/index.js +100 -105
  55. package/dist/index.js.map +1 -1
  56. package/dist/{init-opencode-2BZWAACW.js → init-opencode-6LVZ4CAQ.js} +5 -5
  57. package/dist/{issue-triage-CRUJLWFY.js → issue-triage-Y77JI7WF.js} +4 -4
  58. package/dist/{registry-command-OHIJNUZJ.js → registry-command-P5VIAEOL.js} +2 -2
  59. package/dist/{repo-analyze-D2OY2QSR.js → repo-analyze-JZEMBE6R.js} +2 -2
  60. package/dist/{repo-security-plan-I4FZP7QA.js → repo-security-plan-RHSLO7H6.js} +4 -4
  61. package/dist/{research-helpers-synthesize-NMYYERCP.js → research-helpers-synthesize-PVP6JRZV.js} +3 -3
  62. package/dist/{routing-memory-7DA6WNSA.js → routing-memory-QRIJPRVD.js} +2 -2
  63. package/dist/{session-memory-LV35VSBK.js → session-memory-WARRGYY7.js} +3 -3
  64. package/dist/{setup-command-2OUPZSU7.js → setup-command-GMP5FI7F.js} +10 -10
  65. package/dist/{setup-config-TMXG3O7K.js → setup-config-G3KKZM7O.js} +3 -3
  66. package/dist/{setup-custom-api-N5VE2YPO.js → setup-custom-api-B63X7ISD.js} +4 -4
  67. package/dist/{tool-memory-JL5TF5BI.js → tool-memory-E7JW4YLT.js} +4 -4
  68. package/dist/{weather-report-CCOWOPFG.js → weather-report-RACZWJQL.js} +2 -2
  69. package/package.json +1 -1
  70. package/dist/chunk-2GW2FZXY.js.map +0 -1
  71. package/dist/chunk-2HBQ6XXA.js.map +0 -1
  72. package/dist/chunk-7J7PNOJQ.js.map +0 -1
  73. package/dist/chunk-AP2FD37C.js +0 -127
  74. package/dist/chunk-AP2FD37C.js.map +0 -1
  75. package/dist/chunk-BQ4YXGGQ.js.map +0 -1
  76. package/dist/chunk-ED6VQWNG.js +0 -63
  77. package/dist/chunk-ED6VQWNG.js.map +0 -1
  78. package/dist/chunk-F7N2T53R.js.map +0 -1
  79. package/dist/chunk-FAU7LVIG.js.map +0 -1
  80. package/dist/chunk-M6KXR4LO.js.map +0 -1
  81. package/dist/chunk-R2VJY7Z4.js.map +0 -1
  82. package/dist/chunk-S5HMID6I.js.map +0 -1
  83. package/dist/codebase-search-PIBRTGBE.js +0 -9
  84. package/dist/expert-bridge-J5ZKCYL5.js +0 -11
  85. package/dist/shared-memory-CM6T2MYE.js +0 -8
  86. package/dist/symbol-extractor-WYXPJH65.js +0 -10
  87. package/dist/tool-memory-JL5TF5BI.js.map +0 -1
  88. package/dist/weather-report-CCOWOPFG.js.map +0 -1
  89. /package/dist/{child-mcp-config-HVGU73XG.js.map → child-mcp-config-XVPIO5HV.js.map} +0 -0
  90. /package/dist/{chunk-XZECNG2Q.js.map → chunk-2W4QJ27D.js.map} +0 -0
  91. /package/dist/{chunk-BZVYU4YD.js.map → chunk-3ASED5PR.js.map} +0 -0
  92. /package/dist/{chunk-6M44ZXB4.js.map → chunk-3WUVWZUC.js.map} +0 -0
  93. /package/dist/{chunk-M5ABED6T.js.map → chunk-54UXPJVM.js.map} +0 -0
  94. /package/dist/{chunk-5TM5VL23.js.map → chunk-5T6SYCH2.js.map} +0 -0
  95. /package/dist/{chunk-YW72ORKM.js.map → chunk-6WDJ3IE4.js.map} +0 -0
  96. /package/dist/{chunk-EGK4RZV5.js.map → chunk-AFPHR72D.js.map} +0 -0
  97. /package/dist/{chunk-ITMLH7TF.js.map → chunk-BZUEUD4G.js.map} +0 -0
  98. /package/dist/{chunk-ZBABWKEA.js.map → chunk-FI77TGBY.js.map} +0 -0
  99. /package/dist/{chunk-PPV23O3J.js.map → chunk-L362KRSU.js.map} +0 -0
  100. /package/dist/{chunk-7JLSKX3U.js.map → chunk-Q6PZMGLU.js.map} +0 -0
  101. /package/dist/{chunk-RGKUBFTE.js.map → chunk-RVRXKNND.js.map} +0 -0
  102. /package/dist/{chunk-B3MCX46I.js.map → chunk-U6LDVJS7.js.map} +0 -0
  103. /package/dist/{chunk-K7WUEKCD.js.map → chunk-WGSRH5EQ.js.map} +0 -0
  104. /package/dist/{chunk-M3KVQK54.js.map → chunk-WJFUTRHX.js.map} +0 -0
  105. /package/dist/{chunk-JSQV2EOZ.js.map → chunk-YO27YAEX.js.map} +0 -0
  106. /package/dist/{chunk-ZAY5M2AN.js.map → chunk-Z64MSLEK.js.map} +0 -0
  107. /package/dist/{chunk-AMFVUDWI.js.map → chunk-ZIWEEVMI.js.map} +0 -0
  108. /package/dist/{cli-circuit-breaker-NUZGOAVD.js.map → cli-circuit-breaker-Y26NPPNO.js.map} +0 -0
  109. /package/dist/{codebase-search-PIBRTGBE.js.map → codebase-search-ZFJUVMVR.js.map} +0 -0
  110. /package/dist/{composite-router-4CF3P5D4.js.map → composite-router-X2ZYIEHH.js.map} +0 -0
  111. /package/dist/{consensus-vote-7PLEGFWZ.js.map → consensus-vote-KZ6UURUI.js.map} +0 -0
  112. /package/dist/{context-retriever-R5W4I4IB.js.map → context-retriever-QY4FNTDZ.js.map} +0 -0
  113. /package/dist/{doctor-deep-7JTGI33O.js.map → doctor-deep-2E2GBMYR.js.map} +0 -0
  114. /package/dist/{expert-bridge-J5ZKCYL5.js.map → expert-bridge-FHPWDFJX.js.map} +0 -0
  115. /package/dist/{factory-DD2FPM3H.js.map → factory-STNVY3Y3.js.map} +0 -0
  116. /package/dist/{factory-E2CKCYIK.js.map → factory-W6KROBFN.js.map} +0 -0
  117. /package/dist/{init-opencode-2BZWAACW.js.map → init-opencode-6LVZ4CAQ.js.map} +0 -0
  118. /package/dist/{issue-triage-CRUJLWFY.js.map → issue-triage-Y77JI7WF.js.map} +0 -0
  119. /package/dist/{registry-command-OHIJNUZJ.js.map → registry-command-P5VIAEOL.js.map} +0 -0
  120. /package/dist/{repo-analyze-D2OY2QSR.js.map → repo-analyze-JZEMBE6R.js.map} +0 -0
  121. /package/dist/{repo-security-plan-I4FZP7QA.js.map → repo-security-plan-RHSLO7H6.js.map} +0 -0
  122. /package/dist/{research-helpers-synthesize-NMYYERCP.js.map → research-helpers-synthesize-PVP6JRZV.js.map} +0 -0
  123. /package/dist/{routing-memory-7DA6WNSA.js.map → routing-memory-QRIJPRVD.js.map} +0 -0
  124. /package/dist/{session-memory-LV35VSBK.js.map → session-memory-WARRGYY7.js.map} +0 -0
  125. /package/dist/{setup-command-2OUPZSU7.js.map → setup-command-GMP5FI7F.js.map} +0 -0
  126. /package/dist/{setup-config-TMXG3O7K.js.map → setup-config-G3KKZM7O.js.map} +0 -0
  127. /package/dist/{setup-custom-api-N5VE2YPO.js.map → setup-custom-api-B63X7ISD.js.map} +0 -0
  128. /package/dist/{shared-memory-CM6T2MYE.js.map → tool-memory-E7JW4YLT.js.map} +0 -0
  129. /package/dist/{symbol-extractor-WYXPJH65.js.map → weather-report-RACZWJQL.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/learning/strategy-distiller-persistence.ts","../src/context/context-retriever.ts"],"sourcesContent":["/**\n * Persistent StrategyDistiller — JSON-backed cross-session persistence.\n *\n * Extends StrategyDistiller with atomic disk writes (write tmp + rename)\n * for distilled rules. Hydrates from a versioned JSON snapshot on\n * construction; saves after every distill() call.\n *\n * @module learning/strategy-distiller-persistence\n * (Source: Issue #1009 — Cross-session persistence)\n */\n\nimport { writeFileSync, readFileSync, renameSync, unlinkSync, existsSync } from 'node:fs';\nimport { dirname } from 'node:path';\nimport { z } from 'zod';\nimport { CLI_NAMES } from '../config/model-capabilities-types.js';\n\nimport type { ILogger } from '../core/index.js';\nimport { createLogger } from '../core/index.js';\nimport type { OutcomeStore } from '../orchestration/outcomes/outcome-store.js';\nimport type { DistilledRule, DistillerConfig } from './strategy-distiller-types.js';\nimport { StrategyDistiller, registerPersistentDistillerFactory } from './strategy-distiller.js';\nimport { ensureLearningDir, getRulesFile } from '../config/learning-persistence.js';\n\n// ============================================================================\n// Versioned Schema\n// ============================================================================\n\nconst DistilledRuleSchema = z.object({\n id: z.string(),\n patternType: z.enum(['failure-rate', 'success-rate', 'latency-spike']),\n cli: z.enum(CLI_NAMES),\n category: z.string(),\n action: z.enum(['penalize', 'boost', 'avoid']),\n confidence: z.number(),\n observationCount: z.number(),\n metric: z.number(),\n status: z.enum(['draft', 'active', 'promoted', 'expired']),\n createdAt: z.number(),\n updatedAt: z.number(),\n tainted: z.boolean(),\n});\n\n/** Versioned snapshot schema for atomic saves. */\nexport const RulesSnapshotSchema = z.object({\n version: z.literal(1),\n savedAt: z.string(),\n rules: z.array(DistilledRuleSchema),\n});\n\nexport type RulesSnapshot = z.infer<typeof RulesSnapshotSchema>;\n\n// ============================================================================\n// Configuration\n// ============================================================================\n\nexport interface PersistentDistillerConfig {\n /** Override the file path (useful for testing). */\n readonly filePath?: string;\n /** Override the data directory (useful for testing). */\n readonly dataDir?: string;\n}\n\n// ============================================================================\n// Implementation\n// ============================================================================\n\n/**\n * StrategyDistiller that persists distilled rules to a JSON file.\n *\n * - Construction: hydrates from rules.json via Zod validation\n * - distill(): calls super.distill() then atomically saves snapshot\n * - Corruption: warn + start fresh (no partial loads)\n */\nexport class PersistentStrategyDistiller extends StrategyDistiller {\n private readonly filePath: string;\n private readonly persistLogger: ILogger;\n\n constructor(\n outcomeStore: OutcomeStore,\n persistConfig?: PersistentDistillerConfig,\n logger?: ILogger,\n distillerConfig?: Partial<DistillerConfig>\n ) {\n super(outcomeStore, logger, distillerConfig);\n this.filePath = persistConfig?.filePath ?? getRulesFile();\n this.persistLogger = logger ?? createLogger({ component: 'PersistentStrategyDistiller' });\n\n const dataDir = persistConfig?.dataDir;\n ensureLearningDir(dataDir);\n this.hydrate();\n }\n\n /** Override distill to persist rules after each run. */\n override distill(): void {\n super.distill();\n this.saveSnapshot();\n }\n\n // ==========================================================================\n // Private\n // ==========================================================================\n\n private hydrate(): void {\n if (!existsSync(this.filePath)) {\n this.persistLogger.debug('No rules file found, starting fresh', {\n path: this.filePath,\n });\n return;\n }\n\n try {\n const content = readFileSync(this.filePath, 'utf-8');\n const parsed: unknown = JSON.parse(content);\n const result = RulesSnapshotSchema.safeParse(parsed);\n\n if (!result.success) {\n this.persistLogger.warn('Rules file failed validation, starting fresh', {\n path: this.filePath,\n error: result.error.message,\n });\n return;\n }\n\n this.loadRules(result.data.rules);\n this.persistLogger.info('Hydrated distilled rules from disk', {\n ruleCount: result.data.rules.length,\n savedAt: result.data.savedAt,\n path: this.filePath,\n });\n } catch (error: unknown) {\n const msg = error instanceof Error ? error.message : String(error);\n this.persistLogger.warn('Failed to hydrate rules from disk', {\n error: msg,\n path: this.filePath,\n });\n }\n }\n\n private saveSnapshot(): void {\n const rules = this.getRules();\n const snapshot: RulesSnapshot = {\n version: 1,\n savedAt: new Date().toISOString(),\n rules: rules as DistilledRule[],\n };\n\n const tmpPath = this.filePath + '.tmp';\n try {\n // Ensure parent directory exists\n ensureLearningDir(dirname(this.filePath));\n // Atomic write: temp file + rename\n writeFileSync(tmpPath, JSON.stringify(snapshot, null, 2), 'utf-8');\n renameSync(tmpPath, this.filePath);\n } catch (error: unknown) {\n const msg = error instanceof Error ? error.message : String(error);\n this.persistLogger.warn('Failed to persist rules to disk', {\n error: msg,\n path: this.filePath,\n });\n // Clean up temp file on failure\n try {\n if (existsSync(tmpPath)) unlinkSync(tmpPath);\n } catch (cleanupErr: unknown) {\n const msg = cleanupErr instanceof Error ? cleanupErr.message : String(cleanupErr);\n this.persistLogger.debug('Failed to clean up temp file during persist', {\n path: tmpPath,\n error: msg,\n });\n }\n }\n }\n}\n\n// Self-register factory so CompositeRouter can create PersistentStrategyDistiller\n// without a circular top-level import.\nregisterPersistentDistillerFactory(\n (outcomeStore, logger) => new PersistentStrategyDistiller(outcomeStore, undefined, logger)\n);\n\n/**\n * Phase 5 of #2792 — read the persisted distilled rules from disk\n * without needing a live `StrategyDistiller` instance.\n *\n * `ContextRetriever` uses this so `UnifiedContext.priorStrategies`\n * surfaces the routing learnings the CompositeRouter has already\n * derived, even when the consumer is in a different process / scope\n * (e.g. an `orchestrate` invocation that hasn't constructed its own\n * router yet).\n *\n * Returns `[]` when the file is missing, corrupt, or unreadable; never\n * throws. The caller is responsible for filtering to status / category /\n * tainted as appropriate — this loader returns the raw rule set so\n * future consumers can apply their own predicates.\n */\nexport function loadPersistedRules(filePath: string = getRulesFile()): readonly DistilledRule[] {\n if (!existsSync(filePath)) return [];\n try {\n const content = readFileSync(filePath, 'utf-8');\n const parsed: unknown = JSON.parse(content);\n const result = RulesSnapshotSchema.safeParse(parsed);\n if (!result.success) return [];\n return result.data.rules;\n } catch {\n // Disk read / parse failures contribute an empty list — the consumer\n // contract is \"absence means no signal,\" never an exception.\n return [];\n }\n}\n","/**\n * ContextRetriever — the unified read surface every entry point should call\n * to learn what we already know about a task.\n *\n * Phase 2 of #2792. Before this module, each entry point (routing, orchestration,\n * graph workflow, expert creation) reinvented memory access — or, more commonly,\n * skipped it entirely. That made every backend write-only in practice.\n *\n * `getContextForTask({ task, category })` is the one function every entry point\n * calls. It fans out across the shared backends in parallel, tolerates\n * individual failures (never throws), and returns a typed `UnifiedContext`\n * the consumer can either use directly or summarize into a prompt.\n *\n * **Implementation choice — typed singletons, not registry fan-out.**\n * Phase 1 (#2793) made `IMemoryBackend.query()` real on every attached\n * domain, so a registry-level `Promise.all(...domains.map(d => d.query()))`\n * would now work. But the result type is `unknown[]` per domain, which\n * loses the typed shapes consumers want. For typed reads, reaching into\n * `getToolMemory()` and `getOutcomeStore()` directly is cleaner. The\n * registry-level fan-out remains the right path for opaque/observability\n * consumers like `memory_stats`.\n *\n * @module context/context-retriever\n * (Source: #2792 / #2794)\n */\n\nimport type { Belief } from './belief-core-types.js';\nimport type { AgenticMemoryEntry } from './agentic-memory.js';\nimport type { ScoredMemoryEntry } from './adaptive-memory-types.js';\nimport type { ExperienceEntry } from './mobimem-types.js';\nimport type { PerformanceSummary } from '../orchestration/outcomes/outcome-types.js';\nimport type { TaskCategory } from '../config/task-specialization-types.js';\nimport type { DistilledRule } from '../learning/strategy-distiller-types.js';\nimport type { ILogger } from '../core/logger.js';\nimport { createLogger } from '../core/logger.js';\nimport { getToolMemory } from '../mcp/tools/tool-memory.js';\nimport { getOutcomeStore } from '../orchestration/outcomes/outcome-store.js';\nimport { loadPersistedRules } from '../learning/strategy-distiller-persistence.js';\n\n/**\n * What we know about a task, derived from every shared memory backend.\n *\n * Every field is `readonly` and may be empty — consumers should treat\n * absence as \"no signal,\" not failure. Errors fetching any single backend\n * are logged and produce empty results for that field; the function as a\n * whole never throws.\n */\nexport interface UnifiedContext {\n /** Beliefs whose subject matches the task text. */\n readonly beliefs: readonly Belief[];\n /** A-MEM Zettelkasten entries similar to the task. */\n readonly similarMemories: readonly AgenticMemoryEntry[];\n /** Adaptive priority-scored entries ranked by relevance + recency + importance. */\n readonly recentLearnings: readonly ScoredMemoryEntry[];\n /** MobiMem patterns observed for the task type. */\n readonly experiencePatterns: readonly ExperienceEntry[];\n /** Performance summary scoped to the requested category. */\n readonly outcomes: PerformanceSummary | null;\n /** Distilled routing rules — populated once #2797 lands; empty until then. */\n readonly priorStrategies: readonly DistilledRule[];\n}\n\n/** Options accepted by {@link getContextForTask}. */\nexport interface ContextRetrieverOptions {\n /** Free-text description of the task. Used as the search term. */\n readonly task: string;\n /** Canonical category for outcome scoping. */\n readonly category: TaskCategory;\n /** Per-backend cap on returned rows. Defaults to 5. */\n readonly limit?: number;\n /** Optional logger override. */\n readonly logger?: ILogger;\n}\n\n/** Sensible default — small enough to embed in a prompt, large enough to be useful. */\nconst DEFAULT_LIMIT = 5;\n\n/**\n * The canonical \"what do we already know about this task\" read.\n *\n * Wire this at the top of every entry point: `CompositeRouter.route`,\n * `orchestrate`, graph workflow start, `create_expert`. Even if the\n * consumer initially just logs the result, every backend's read path\n * gets exercised and the silos visibly converge.\n *\n * Latency: O(slowest individual backend). Each backend's call is wrapped\n * so a slow/failing one doesn't block the others. No caching in this\n * version — if a hot caller emerges, layer a TTL cache on top.\n */\nexport async function getContextForTask(options: ContextRetrieverOptions): Promise<UnifiedContext> {\n const limit = options.limit ?? DEFAULT_LIMIT;\n const logger = options.logger ?? createLogger({ component: 'ContextRetriever' });\n\n const [beliefs, similarMemories, recentLearnings, experiencePatterns, outcomes] =\n await Promise.all([\n fetchBeliefs(options.task, limit, logger),\n fetchSimilarMemories(options.task, limit, logger),\n fetchRecentLearnings(options.task, limit, logger),\n fetchExperiencePatterns(options.task, limit, logger),\n fetchOutcomes(options.category, logger),\n ]);\n\n const priorStrategies = fetchPriorStrategies(options.category, limit, logger);\n\n return {\n beliefs,\n similarMemories,\n recentLearnings,\n experiencePatterns,\n outcomes,\n priorStrategies,\n };\n}\n\n/**\n * Phase 5 of #2792 — surface distilled routing rules in the unified\n * context. Reads from the persisted rules file (written by\n * `PersistentStrategyDistiller`) so consumers see the same learnings the\n * CompositeRouter applies at decision time, without needing a live\n * router instance.\n *\n * Filters to (a) `status === 'active'` (rules that aren't deprecated or\n * shadowed), (b) `tainted === false` (security gate — tainted rules\n * never reach consumers per Phase 5 acceptance), and (c) category\n * matching the task's category or a global rule.\n */\nfunction fetchPriorStrategies(\n category: TaskCategory,\n limit: number,\n logger: ILogger\n): readonly DistilledRule[] {\n try {\n const all = loadPersistedRules();\n return all\n .filter((r) => r.status === 'active' && !r.tainted)\n .filter((r) => r.category === category || r.category === '*')\n .slice(0, limit);\n } catch (error: unknown) {\n logger.debug('ContextRetriever: prior-strategies fetch failed', {\n error: formatError(error),\n });\n return [];\n }\n}\n\nasync function fetchBeliefs(\n task: string,\n limit: number,\n logger: ILogger\n): Promise<readonly Belief[]> {\n try {\n const tm = getToolMemory(logger);\n const beliefs = tm.getBeliefMemory();\n const result = await beliefs.recallBySubject(task, limit);\n return result.ok ? result.value : [];\n } catch (error: unknown) {\n logger.debug('ContextRetriever: belief fetch failed', { error: formatError(error) });\n return [];\n }\n}\n\nasync function fetchSimilarMemories(\n task: string,\n limit: number,\n logger: ILogger\n): Promise<readonly AgenticMemoryEntry[]> {\n try {\n const tm = getToolMemory(logger);\n const agentic = tm.getAgenticMemoryBackend();\n if (agentic === null) return [];\n const result = await agentic.searchAgentic(task, limit);\n return result.ok ? result.value : [];\n } catch (error: unknown) {\n logger.debug('ContextRetriever: agentic search failed', { error: formatError(error) });\n return [];\n }\n}\n\nasync function fetchRecentLearnings(\n task: string,\n limit: number,\n logger: ILogger\n): Promise<readonly ScoredMemoryEntry[]> {\n try {\n const tm = getToolMemory(logger);\n const adaptive = tm.getAdaptiveMemoryBackend();\n if (adaptive === null) return [];\n const result = await adaptive.retrieveByPriority({ query: task, limit });\n return result.ok ? result.value : [];\n } catch (error: unknown) {\n logger.debug('ContextRetriever: adaptive fetch failed', { error: formatError(error) });\n return [];\n }\n}\n\nfunction fetchExperiencePatterns(\n task: string,\n limit: number,\n logger: ILogger\n): Promise<readonly ExperienceEntry[]> {\n try {\n const tm = getToolMemory(logger);\n const mobimem = tm.getMobiMem();\n if (mobimem === null) return Promise.resolve([]);\n return Promise.resolve(mobimem.experience.findPatterns(task, limit));\n } catch (error: unknown) {\n logger.debug('ContextRetriever: mobimem fetch failed', { error: formatError(error) });\n return Promise.resolve([]);\n }\n}\n\nfunction fetchOutcomes(\n category: TaskCategory,\n logger: ILogger\n): Promise<PerformanceSummary | null> {\n try {\n const store = getOutcomeStore();\n return Promise.resolve(store.summarize({ category }));\n } catch (error: unknown) {\n logger.debug('ContextRetriever: outcomes fetch failed', { error: formatError(error) });\n return Promise.resolve(null);\n }\n}\n\nfunction formatError(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\n/**\n * Best-effort {@link TaskCategory} inference from free-text task content.\n * Used by entry-point wiring (Phase 3 / #2795) when the caller doesn't\n * carry a structured category. Keyword-based; if nothing matches,\n * returns `'exploration'` (which scopes the outcomes summary to the\n * broadest historical baseline).\n *\n * Intentionally simple — this is a *fallback*, not a classifier. Real\n * classification happens at routing time via `cli-adapters/task-classifier`.\n */\nexport function inferTaskCategory(task: string): TaskCategory {\n const t = task.toLowerCase();\n if (/security|vulnerab|cve|threat|owasp|injection|xss/.test(t)) return 'security_review';\n if (/architect|design doc|rfc|adr|system design/.test(t)) return 'architecture';\n if (/test|spec|coverage|vitest|jest|pytest/.test(t)) return 'testing';\n if (/review|audit|critique|feedback/.test(t)) return 'code_review';\n if (/docs|documentation|readme|tutorial|guide/.test(t)) return 'documentation';\n if (/plan|roadmap|epic|sprint|breakdown/.test(t)) return 'planning';\n if (/research|investigate|explore|survey|analyze/.test(t)) return 'research';\n if (/deploy| ci |\\bcd\\b|pipeline|kubernetes|docker|infra|terraform/.test(t)) return 'devops';\n if (/implement|build|create|add|refactor|fix|bug|feature/.test(t)) return 'code_generation';\n return 'exploration';\n}\n\n/**\n * Project a {@link UnifiedContext} into a compact human-readable block\n * suitable for prepending to a system prompt. Skips empty sections so\n * the prefix never wastes tokens on \\\"no signal.\\\"\n *\n * Phase 3 of #2792 — used by `orchestrate` and graph workflow start to\n * surface accumulated memory at the entry point.\n */\nexport function summarizeContextForPrompt(ctx: UnifiedContext): string {\n const sections: string[] = [];\n\n if (ctx.beliefs.length > 0) {\n const lines = ctx.beliefs\n .slice(0, 5)\n .map((b) => `- ${b.subject} ${b.predicate} ${b.object} (confidence: ${b.confidence})`);\n sections.push(`### Beliefs\\n${lines.join('\\n')}`);\n }\n\n if (ctx.similarMemories.length > 0) {\n const lines = ctx.similarMemories\n .slice(0, 3)\n .map((m) => `- ${m.attributes.contextDescription}`);\n sections.push(`### Similar prior work\\n${lines.join('\\n')}`);\n }\n\n if (ctx.experiencePatterns.length > 0) {\n const lines = ctx.experiencePatterns\n .slice(0, 3)\n .map(\n (p) =>\n `- ${p.taskType}: ${(p.successRate * 100).toFixed(0)}% success over ${String(p.attemptCount)} attempts`\n );\n sections.push(`### Observed patterns\\n${lines.join('\\n')}`);\n }\n\n if (ctx.outcomes !== null && ctx.outcomes.totalTasks > 0) {\n sections.push(\n `### Outcomes for this category\\n- ${String(ctx.outcomes.totalTasks)} prior tasks, ${(ctx.outcomes.successRate * 100).toFixed(0)}% success`\n );\n }\n\n return sections.length === 0 ? '' : `## Prior Context (Nexus Memory)\\n${sections.join('\\n\\n')}`;\n}\n"],"mappings":"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","names":["msg"]}
@@ -1,9 +0,0 @@
1
- import {
2
- CodebaseIndex
3
- } from "./chunk-AP2FD37C.js";
4
- import "./chunk-BQ4YXGGQ.js";
5
- import "./chunk-PR4QN5HX.js";
6
- export {
7
- CodebaseIndex
8
- };
9
- //# sourceMappingURL=codebase-search-PIBRTGBE.js.map
@@ -1,11 +0,0 @@
1
- import {
2
- executeExpert
3
- } from "./chunk-2GW2FZXY.js";
4
- import "./chunk-6M44ZXB4.js";
5
- import "./chunk-HFSSADUV.js";
6
- import "./chunk-I2HMWH4R.js";
7
- import "./chunk-PR4QN5HX.js";
8
- export {
9
- executeExpert
10
- };
11
- //# sourceMappingURL=expert-bridge-J5ZKCYL5.js.map
@@ -1,8 +0,0 @@
1
- import {
2
- SharedMemoryStore
3
- } from "./chunk-ED6VQWNG.js";
4
- import "./chunk-PR4QN5HX.js";
5
- export {
6
- SharedMemoryStore
7
- };
8
- //# sourceMappingURL=shared-memory-CM6T2MYE.js.map
@@ -1,10 +0,0 @@
1
- import {
2
- extractSymbolIndex,
3
- extractSymbols
4
- } from "./chunk-BQ4YXGGQ.js";
5
- import "./chunk-PR4QN5HX.js";
6
- export {
7
- extractSymbolIndex,
8
- extractSymbols
9
- };
10
- //# sourceMappingURL=symbol-extractor-WYXPJH65.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}