agentic-orchestrator 0.1.26 → 0.1.28

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 (172) hide show
  1. package/AGENTS.md +2 -2
  2. package/CLAUDE.md +2 -2
  3. package/README.md +47 -14
  4. package/agentic/orchestrator/agents.yaml +13 -0
  5. package/agentic/orchestrator/policy.yaml +3 -0
  6. package/agentic/orchestrator/schemas/agents.schema.json +76 -0
  7. package/agentic/orchestrator/schemas/policy.schema.json +16 -0
  8. package/agentic/orchestrator/schemas/policy.user.schema.json +16 -0
  9. package/agentic/orchestrator/schemas/state.schema.json +53 -0
  10. package/apps/control-plane/src/application/configuration-service.ts +181 -0
  11. package/apps/control-plane/src/application/kernel-tool-wiring.ts +292 -0
  12. package/apps/control-plane/src/application/services/checkpoint-service.ts +523 -0
  13. package/apps/control-plane/src/application/services/feature-send-message-service.ts +132 -0
  14. package/apps/control-plane/src/application/services/patch-service.ts +29 -5
  15. package/apps/control-plane/src/application/services/repo-operations-service.ts +276 -0
  16. package/apps/control-plane/src/application/services/worktree-watchdog-service.ts +156 -0
  17. package/apps/control-plane/src/cli/cli-argument-parser.ts +12 -0
  18. package/apps/control-plane/src/cli/help-command-handler.ts +17 -0
  19. package/apps/control-plane/src/cli/init-command-handler.ts +31 -0
  20. package/apps/control-plane/src/cli/resume-command-handler.ts +31 -4
  21. package/apps/control-plane/src/cli/rollback-command-handler.ts +217 -0
  22. package/apps/control-plane/src/cli/run-command-handler.ts +8 -0
  23. package/apps/control-plane/src/cli/types.ts +3 -0
  24. package/apps/control-plane/src/core/kernel-types.ts +55 -0
  25. package/apps/control-plane/src/core/kernel.ts +61 -878
  26. package/apps/control-plane/src/core/tool-caller.ts +10 -0
  27. package/apps/control-plane/src/core/utils/field-readers.ts +38 -0
  28. package/apps/control-plane/src/core/utils/index-normalizer.ts +119 -0
  29. package/apps/control-plane/src/core/utils/path-normalizers.ts +22 -0
  30. package/apps/control-plane/src/interfaces/cli/bootstrap.ts +15 -0
  31. package/apps/control-plane/src/providers/api-worker-provider.ts +14 -12
  32. package/apps/control-plane/src/providers/cli-worker-provider.ts +82 -12
  33. package/apps/control-plane/src/providers/providers.ts +45 -24
  34. package/apps/control-plane/src/providers/worker-provider-factory.ts +36 -1
  35. package/apps/control-plane/src/supervisor/run-coordinator.ts +91 -36
  36. package/apps/control-plane/src/supervisor/runtime.ts +107 -1
  37. package/apps/control-plane/src/supervisor/types.ts +9 -0
  38. package/apps/control-plane/src/supervisor/worker-decision-loop.ts +253 -14
  39. package/apps/control-plane/test/checkpoint-service.spec.ts +537 -0
  40. package/apps/control-plane/test/cli-helpers.spec.ts +28 -0
  41. package/apps/control-plane/test/cli.unit.spec.ts +52 -0
  42. package/apps/control-plane/test/configuration-service.spec.ts +466 -0
  43. package/apps/control-plane/test/dashboard-api.integration.spec.ts +537 -0
  44. package/apps/control-plane/test/dashboard-client.spec.ts +233 -0
  45. package/apps/control-plane/test/feature-send-message-service.spec.ts +314 -0
  46. package/apps/control-plane/test/init-wizard.spec.ts +35 -0
  47. package/apps/control-plane/test/path-normalizers.spec.ts +41 -0
  48. package/apps/control-plane/test/repo-operations-service.spec.ts +339 -0
  49. package/apps/control-plane/test/resume-command.spec.ts +33 -0
  50. package/apps/control-plane/test/review-workspace-logic.spec.ts +130 -0
  51. package/apps/control-plane/test/rollback-command.spec.ts +208 -0
  52. package/apps/control-plane/test/run-coordinator.spec.ts +119 -0
  53. package/apps/control-plane/test/worker-decision-loop.spec.ts +209 -0
  54. package/apps/control-plane/test/worker-provider-adapters.spec.ts +102 -0
  55. package/apps/control-plane/test/worker-provider-factory.spec.ts +14 -0
  56. package/apps/control-plane/test/worktree-watchdog-service.spec.ts +147 -0
  57. package/config/agentic/orchestrator/agents.yaml +13 -0
  58. package/dist/apps/control-plane/application/configuration-service.d.ts +19 -0
  59. package/dist/apps/control-plane/application/configuration-service.js +123 -0
  60. package/dist/apps/control-plane/application/configuration-service.js.map +1 -0
  61. package/dist/apps/control-plane/application/kernel-tool-wiring.d.ts +39 -0
  62. package/dist/apps/control-plane/application/kernel-tool-wiring.js +38 -0
  63. package/dist/apps/control-plane/application/kernel-tool-wiring.js.map +1 -0
  64. package/dist/apps/control-plane/application/services/checkpoint-service.d.ts +84 -0
  65. package/dist/apps/control-plane/application/services/checkpoint-service.js +367 -0
  66. package/dist/apps/control-plane/application/services/checkpoint-service.js.map +1 -0
  67. package/dist/apps/control-plane/application/services/feature-send-message-service.d.ts +25 -0
  68. package/dist/apps/control-plane/application/services/feature-send-message-service.js +105 -0
  69. package/dist/apps/control-plane/application/services/feature-send-message-service.js.map +1 -0
  70. package/dist/apps/control-plane/application/services/patch-service.d.ts +6 -0
  71. package/dist/apps/control-plane/application/services/patch-service.js +11 -2
  72. package/dist/apps/control-plane/application/services/patch-service.js.map +1 -1
  73. package/dist/apps/control-plane/application/services/repo-operations-service.d.ts +70 -0
  74. package/dist/apps/control-plane/application/services/repo-operations-service.js +213 -0
  75. package/dist/apps/control-plane/application/services/repo-operations-service.js.map +1 -0
  76. package/dist/apps/control-plane/application/services/worktree-watchdog-service.d.ts +23 -0
  77. package/dist/apps/control-plane/application/services/worktree-watchdog-service.js +119 -0
  78. package/dist/apps/control-plane/application/services/worktree-watchdog-service.js.map +1 -0
  79. package/dist/apps/control-plane/cli/cli-argument-parser.js +12 -0
  80. package/dist/apps/control-plane/cli/cli-argument-parser.js.map +1 -1
  81. package/dist/apps/control-plane/cli/help-command-handler.js +17 -0
  82. package/dist/apps/control-plane/cli/help-command-handler.js.map +1 -1
  83. package/dist/apps/control-plane/cli/init-command-handler.js +23 -0
  84. package/dist/apps/control-plane/cli/init-command-handler.js.map +1 -1
  85. package/dist/apps/control-plane/cli/resume-command-handler.js +25 -5
  86. package/dist/apps/control-plane/cli/resume-command-handler.js.map +1 -1
  87. package/dist/apps/control-plane/cli/rollback-command-handler.d.ts +6 -0
  88. package/dist/apps/control-plane/cli/rollback-command-handler.js +177 -0
  89. package/dist/apps/control-plane/cli/rollback-command-handler.js.map +1 -0
  90. package/dist/apps/control-plane/cli/run-command-handler.js +7 -1
  91. package/dist/apps/control-plane/cli/run-command-handler.js.map +1 -1
  92. package/dist/apps/control-plane/cli/types.d.ts +3 -0
  93. package/dist/apps/control-plane/cli/types.js +1 -0
  94. package/dist/apps/control-plane/cli/types.js.map +1 -1
  95. package/dist/apps/control-plane/core/configuration-service.d.ts +25 -0
  96. package/dist/apps/control-plane/core/configuration-service.js +130 -0
  97. package/dist/apps/control-plane/core/configuration-service.js.map +1 -0
  98. package/dist/apps/control-plane/core/kernel-tool-wiring.d.ts +50 -0
  99. package/dist/apps/control-plane/core/kernel-tool-wiring.js +44 -0
  100. package/dist/apps/control-plane/core/kernel-tool-wiring.js.map +1 -0
  101. package/dist/apps/control-plane/core/kernel-types.d.ts +48 -0
  102. package/dist/apps/control-plane/core/kernel-types.js +2 -0
  103. package/dist/apps/control-plane/core/kernel-types.js.map +1 -0
  104. package/dist/apps/control-plane/core/kernel.d.ts +17 -48
  105. package/dist/apps/control-plane/core/kernel.js +44 -539
  106. package/dist/apps/control-plane/core/kernel.js.map +1 -1
  107. package/dist/apps/control-plane/core/tool-caller.d.ts +10 -0
  108. package/dist/apps/control-plane/core/utils/error-normalizer.d.ts +2 -0
  109. package/dist/apps/control-plane/core/utils/error-normalizer.js +51 -0
  110. package/dist/apps/control-plane/core/utils/error-normalizer.js.map +1 -0
  111. package/dist/apps/control-plane/core/utils/field-readers.d.ts +9 -0
  112. package/dist/apps/control-plane/core/utils/field-readers.js +30 -0
  113. package/dist/apps/control-plane/core/utils/field-readers.js.map +1 -0
  114. package/dist/apps/control-plane/core/utils/index-normalizer.d.ts +7 -0
  115. package/dist/apps/control-plane/core/utils/index-normalizer.js +92 -0
  116. package/dist/apps/control-plane/core/utils/index-normalizer.js.map +1 -0
  117. package/dist/apps/control-plane/core/utils/path-normalizers.d.ts +2 -0
  118. package/dist/apps/control-plane/core/utils/path-normalizers.js +17 -0
  119. package/dist/apps/control-plane/core/utils/path-normalizers.js.map +1 -0
  120. package/dist/apps/control-plane/interfaces/cli/bootstrap.js +13 -1
  121. package/dist/apps/control-plane/interfaces/cli/bootstrap.js.map +1 -1
  122. package/dist/apps/control-plane/providers/api-worker-provider.d.ts +4 -13
  123. package/dist/apps/control-plane/providers/api-worker-provider.js +10 -0
  124. package/dist/apps/control-plane/providers/api-worker-provider.js.map +1 -1
  125. package/dist/apps/control-plane/providers/cli-worker-provider.d.ts +11 -13
  126. package/dist/apps/control-plane/providers/cli-worker-provider.js +64 -0
  127. package/dist/apps/control-plane/providers/cli-worker-provider.js.map +1 -1
  128. package/dist/apps/control-plane/providers/providers.d.ts +31 -24
  129. package/dist/apps/control-plane/providers/providers.js +10 -0
  130. package/dist/apps/control-plane/providers/providers.js.map +1 -1
  131. package/dist/apps/control-plane/providers/worker-provider-factory.d.ts +11 -0
  132. package/dist/apps/control-plane/providers/worker-provider-factory.js +20 -1
  133. package/dist/apps/control-plane/providers/worker-provider-factory.js.map +1 -1
  134. package/dist/apps/control-plane/supervisor/run-coordinator.d.ts +3 -0
  135. package/dist/apps/control-plane/supervisor/run-coordinator.js +81 -33
  136. package/dist/apps/control-plane/supervisor/run-coordinator.js.map +1 -1
  137. package/dist/apps/control-plane/supervisor/runtime.d.ts +8 -1
  138. package/dist/apps/control-plane/supervisor/runtime.js +90 -0
  139. package/dist/apps/control-plane/supervisor/runtime.js.map +1 -1
  140. package/dist/apps/control-plane/supervisor/types.d.ts +11 -0
  141. package/dist/apps/control-plane/supervisor/types.js.map +1 -1
  142. package/dist/apps/control-plane/supervisor/worker-decision-loop.d.ts +21 -1
  143. package/dist/apps/control-plane/supervisor/worker-decision-loop.js +207 -13
  144. package/dist/apps/control-plane/supervisor/worker-decision-loop.js.map +1 -1
  145. package/package.json +1 -1
  146. package/packages/web-dashboard/package.json +2 -0
  147. package/packages/web-dashboard/src/app/analytics/page.tsx +83 -2
  148. package/packages/web-dashboard/src/app/api/actions/route.ts +92 -1
  149. package/packages/web-dashboard/src/app/api/analytics/route.ts +5 -2
  150. package/packages/web-dashboard/src/app/api/features/[id]/checkpoints/[checkpointId]/diff/route.ts +43 -0
  151. package/packages/web-dashboard/src/app/api/features/[id]/checkpoints/compare/route.ts +45 -0
  152. package/packages/web-dashboard/src/app/api/features/[id]/checkpoints/stream/route.ts +170 -0
  153. package/packages/web-dashboard/src/app/api/features/[id]/file-diff/route.ts +144 -0
  154. package/packages/web-dashboard/src/app/api/features/[id]/log-stream/route.ts +167 -0
  155. package/packages/web-dashboard/src/app/api/features/[id]/raw-logs/[filename]/route.ts +65 -0
  156. package/packages/web-dashboard/src/app/api/features/[id]/raw-logs/route.ts +63 -0
  157. package/packages/web-dashboard/src/app/api/features/[id]/timeline/route.ts +60 -0
  158. package/packages/web-dashboard/src/app/feature/[id]/page.tsx +32 -11
  159. package/packages/web-dashboard/src/app/globals.css +2 -0
  160. package/packages/web-dashboard/src/components/detail-panel.tsx +483 -0
  161. package/packages/web-dashboard/src/components/review-workspace.tsx +1162 -0
  162. package/packages/web-dashboard/src/lib/aop-client.ts +725 -0
  163. package/packages/web-dashboard/src/lib/review-contracts.ts +182 -0
  164. package/packages/web-dashboard/src/lib/review-workspace-logic.ts +64 -0
  165. package/packages/web-dashboard/src/lib/types.ts +131 -0
  166. package/packages/web-dashboard/src/styles/dashboard.module.css +333 -0
  167. package/spec-files/completed/agentic_orchestrator_execution_mode_spec.md +1905 -0
  168. package/spec-files/outstanding/agentic_orchestrator_runtime_inspection_spec.md +940 -0
  169. package/spec-files/outstanding/execution_mode_critical_review.md +355 -0
  170. package/spec-files/outstanding/shadow_workspace_implementation_spec.md +1271 -0
  171. package/spec-files/outstanding/shadow_workspace_spec_summary.md +222 -0
  172. package/spec-files/progress.md +269 -1
@@ -0,0 +1,130 @@
1
+ import path from 'node:path';
2
+ import { pathExists } from './fs.js';
3
+ import { loadAndValidateYaml } from './schemas.js';
4
+ import { ERROR_CODES } from './error-codes.js';
5
+ import { ensureAopRuntimeLayout } from './path-layout.js';
6
+ import { loadComposedPolicy } from '../application/services/policy-loader-service.js';
7
+ import { ACTIVITY_DETECTOR_SLOT, NOTIFICATION_CHANNEL_SLOT, SCM_PROVIDER_SLOT, globalAdapterRegistry, } from '../application/adapters/adapter-registry.js';
8
+ import { ToolRegistryLoader } from '../mcp/tool-registry-loader.js';
9
+ import { readStringField, readObjectField } from './utils/field-readers.js';
10
+ import { readPositiveIntegerField } from './utils/field-readers.js';
11
+ function validateAgentRuntimeTimeoutRelationships(agentsConfig) {
12
+ const runtime = readObjectField(agentsConfig, 'runtime');
13
+ if (Object.keys(runtime).length === 0) {
14
+ return;
15
+ }
16
+ const responseTimeoutMs = readPositiveIntegerField(runtime, 'worker_response_timeout_ms');
17
+ const spawnTimeoutMs = readPositiveIntegerField(runtime, 'worker_spawn_timeout_ms');
18
+ const idleTimeoutMs = readPositiveIntegerField(runtime, 'worker_idle_timeout_ms');
19
+ if (responseTimeoutMs != null && spawnTimeoutMs != null && spawnTimeoutMs >= responseTimeoutMs) {
20
+ throw new Error('invalid_agents_yaml:runtime.worker_spawn_timeout_ms must be less than runtime.worker_response_timeout_ms');
21
+ }
22
+ if (responseTimeoutMs != null && idleTimeoutMs != null && idleTimeoutMs > responseTimeoutMs) {
23
+ throw new Error('invalid_agents_yaml:runtime.worker_idle_timeout_ms must be less than or equal to runtime.worker_response_timeout_ms');
24
+ }
25
+ }
26
+ /**
27
+ * Handles loading and validation of all configuration files for the kernel.
28
+ *
29
+ * Extracts the load() body from AopKernel to keep the kernel focused on
30
+ * orchestration rather than configuration I/O.
31
+ */
32
+ export class ConfigurationService {
33
+ repoRoot;
34
+ pathLayout;
35
+ schemaRegistry;
36
+ configOverrides;
37
+ constructor(repoRoot, pathLayout, schemaRegistry, configOverrides) {
38
+ this.repoRoot = repoRoot;
39
+ this.pathLayout = pathLayout;
40
+ this.schemaRegistry = schemaRegistry;
41
+ this.configOverrides = configOverrides;
42
+ }
43
+ async resolveDefaultConfigPath(fileName) {
44
+ const primary = path.join(this.pathLayout.orchestratorRoot, fileName);
45
+ if (await pathExists(primary)) {
46
+ return primary;
47
+ }
48
+ const legacy = path.join(this.pathLayout.legacyOrchestratorRoot, fileName);
49
+ if (await pathExists(legacy)) {
50
+ return legacy;
51
+ }
52
+ return primary;
53
+ }
54
+ async loadAll() {
55
+ await ensureAopRuntimeLayout(this.pathLayout);
56
+ const gatesPath = this.configOverrides.gatesPath ?? (await this.resolveDefaultConfigPath('gates.yaml'));
57
+ const policyPath = this.configOverrides.policyPath ?? (await this.resolveDefaultConfigPath('policy.yaml'));
58
+ const agentsPath = this.configOverrides.agentsPath ?? (await this.resolveDefaultConfigPath('agents.yaml'));
59
+ const adaptersPath = this.configOverrides.adaptersPath ?? (await this.resolveDefaultConfigPath('adapters.yaml'));
60
+ const gates = await loadAndValidateYaml(this.schemaRegistry, 'gates.schema.json', gatesPath);
61
+ if (!gates.validation.valid) {
62
+ throw new Error(`invalid_gates_yaml:${JSON.stringify(gates.validation.errors)}`);
63
+ }
64
+ const { mergedPolicy } = await loadComposedPolicy(this.repoRoot, policyPath, this.schemaRegistry);
65
+ const parsedPolicy = mergedPolicy;
66
+ const implementation = readObjectField(parsedPolicy, 'implementation');
67
+ const testing = readObjectField(parsedPolicy, 'testing');
68
+ if (readStringField(implementation, 'workspace') !== 'nx') {
69
+ throw new Error(ERROR_CODES.INVALID_WORKSPACE_IMPLEMENTATION);
70
+ }
71
+ if (readStringField(testing, 'framework') !== 'vitest') {
72
+ throw new Error(ERROR_CODES.INVALID_WORKSPACE_IMPLEMENTATION);
73
+ }
74
+ const agentsExists = await pathExists(agentsPath);
75
+ let agents = { parsed: { version: 1, roles: {} }, validation: { valid: true, errors: [] } };
76
+ if (agentsExists) {
77
+ agents = await loadAndValidateYaml(this.schemaRegistry, 'agents.schema.json', agentsPath);
78
+ if (!agents.validation.valid) {
79
+ throw new Error(`invalid_agents_yaml:${JSON.stringify(agents.validation.errors)}`);
80
+ }
81
+ validateAgentRuntimeTimeoutRelationships(agents.parsed);
82
+ }
83
+ const adaptersExists = await pathExists(adaptersPath);
84
+ let adapters = { parsed: {}, validation: { valid: true, errors: [] } };
85
+ if (adaptersExists) {
86
+ adapters = await loadAndValidateYaml(this.schemaRegistry, 'adapters.schema.json', adaptersPath);
87
+ if (!adapters.validation.valid) {
88
+ throw new Error(`invalid_adapters_yaml:${JSON.stringify(adapters.validation.errors)}`);
89
+ }
90
+ const parsedAdapters = readObjectField(adapters, 'parsed');
91
+ const notificationChannel = readStringField(parsedAdapters, NOTIFICATION_CHANNEL_SLOT.name);
92
+ if (notificationChannel) {
93
+ try {
94
+ globalAdapterRegistry.resolve(NOTIFICATION_CHANNEL_SLOT, notificationChannel, {});
95
+ }
96
+ catch {
97
+ throw new Error(`adapter_not_found:${NOTIFICATION_CHANNEL_SLOT.name}:${notificationChannel}`);
98
+ }
99
+ }
100
+ const activityDetector = readStringField(parsedAdapters, ACTIVITY_DETECTOR_SLOT.name);
101
+ if (activityDetector) {
102
+ try {
103
+ globalAdapterRegistry.resolve(ACTIVITY_DETECTOR_SLOT, activityDetector, {});
104
+ }
105
+ catch {
106
+ throw new Error(`adapter_not_found:${ACTIVITY_DETECTOR_SLOT.name}:${activityDetector}`);
107
+ }
108
+ }
109
+ const scmProvider = readStringField(parsedAdapters, SCM_PROVIDER_SLOT.name);
110
+ if (scmProvider) {
111
+ try {
112
+ globalAdapterRegistry.resolve(SCM_PROVIDER_SLOT, scmProvider, {});
113
+ }
114
+ catch {
115
+ throw new Error(`adapter_not_found:${SCM_PROVIDER_SLOT.name}:${scmProvider}`);
116
+ }
117
+ }
118
+ }
119
+ const registryLoader = new ToolRegistryLoader(this.repoRoot);
120
+ const toolRegistry = await registryLoader.load();
121
+ return {
122
+ gatesConfig: gates.parsed,
123
+ policy: parsedPolicy,
124
+ agentsConfig: agents.parsed,
125
+ adaptersConfig: readObjectField(adapters, 'parsed'),
126
+ toolRegistry,
127
+ };
128
+ }
129
+ }
130
+ //# sourceMappingURL=configuration-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration-service.js","sourceRoot":"","sources":["../../../../apps/control-plane/src/core/configuration-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import type { ToolHandlerRegistry } from '../application/tools/tool-router.js';
2
+ import type { FeatureDeleteResult } from '../application/services/feature-deletion-service.js';
3
+ type AnyRecord = Record<string, any>;
4
+ /**
5
+ * Minimal interface of kernel methods used by tool handlers.
6
+ * The kernel implements this interface; tool wiring only depends on it.
7
+ */
8
+ export interface KernelToolFacade {
9
+ featureDiscoverSpecs(): Promise<unknown>;
10
+ featureInit(featureId: string | null): Promise<unknown>;
11
+ featureGetContext(featureId: string | null): Promise<unknown>;
12
+ featureStateGet(featureId: string | null): Promise<unknown>;
13
+ featureStatePatch(featureId: string | null, expectedVersion: number | null, patch: unknown): Promise<unknown>;
14
+ featureLogAppend(featureId: string | null, note: string | null, context: unknown): Promise<unknown>;
15
+ planSubmit(featureId: string | null, plan: unknown, expectedVersion: number | null): Promise<unknown>;
16
+ planGet(featureId: string | null): Promise<unknown>;
17
+ planUpdate(featureId: string | null, expectedPlanVersion: number | null, plan: unknown): Promise<unknown>;
18
+ repoEnsureWorktree(featureId: string | null): Promise<unknown>;
19
+ repoApplyPatch(featureId: string | null, unifiedDiff: string | null): Promise<unknown>;
20
+ repoStatus(featureId: string | null): Promise<unknown>;
21
+ repoDiff(featureId: string | null, options: string[]): Promise<unknown>;
22
+ repoReadFile(featureId: string | null, filePath: string | null): Promise<unknown>;
23
+ repoSearch(featureId: string | null, query: string | null): Promise<unknown>;
24
+ repoDiffBundle(featureId: string | null): Promise<unknown>;
25
+ featureReadyToMerge(featureId: string | null, commitMessage: string | null, mergeStrategy: string | null, userApprovalToken: string | null): Promise<unknown>;
26
+ featureDelete(featureId: string | null, dryRun: boolean | null, confirm: boolean | null, removeWorktree: boolean | null, removeBranch: string | null): Promise<FeatureDeleteResult>;
27
+ gatesList(profileName: string | null): Promise<unknown>;
28
+ gatesRun(featureId: string | null, profileName: string | null, mode: string | null): Promise<unknown>;
29
+ evidenceLatest(featureId: string | null): Promise<unknown>;
30
+ qaTestIndexGet(featureId: string | null): Promise<unknown>;
31
+ qaTestIndexUpdate(featureId: string | null, expectedVersion: number | null, updates: unknown, evidenceRefs: unknown[]): Promise<unknown>;
32
+ locksAcquire(resource: string | null, featureId: string | null, waitTimeoutSeconds: number | null): Promise<unknown>;
33
+ locksRelease(resource: string | null, featureId: string | null): Promise<unknown>;
34
+ collisionsScan(): Promise<unknown>;
35
+ reportDashboard(): Promise<unknown>;
36
+ reportFeatureSummary(featureId: string | null): Promise<unknown>;
37
+ featureSendMessage(featureId: string | null, message: string | null): Promise<unknown>;
38
+ costRecord(featureId: string, tokensDelta: number, costUsdDelta: number): Promise<unknown>;
39
+ costGet(featureId: string | null): Promise<unknown>;
40
+ performanceRecordOutcome(args: AnyRecord): Promise<unknown>;
41
+ performanceGetAnalytics(provider: string | null, model: string | null): Promise<unknown>;
42
+ }
43
+ /**
44
+ * Registers all MCP tool handlers on the given registry.
45
+ *
46
+ * Extracted from AopKernel.registerToolHandlers() to reduce kernel size.
47
+ * The kernel calls this during construction.
48
+ */
49
+ export declare function registerKernelTools(toolHandlers: ToolHandlerRegistry, kernel: KernelToolFacade): void;
50
+ export {};
@@ -0,0 +1,44 @@
1
+ import { TOOLS } from './constants.js';
2
+ import { readStringField, readNumberField, readBooleanField, asArray, } from './utils/field-readers.js';
3
+ /**
4
+ * Registers all MCP tool handlers on the given registry.
5
+ *
6
+ * Extracted from AopKernel.registerToolHandlers() to reduce kernel size.
7
+ * The kernel calls this during construction.
8
+ */
9
+ export function registerKernelTools(toolHandlers, kernel) {
10
+ toolHandlers.register(TOOLS.FEATURE_DISCOVER_SPECS, async () => kernel.featureDiscoverSpecs());
11
+ toolHandlers.register(TOOLS.FEATURE_INIT, async (args) => kernel.featureInit(readStringField(args, 'feature_id')));
12
+ toolHandlers.register(TOOLS.FEATURE_GET_CONTEXT, async (args) => kernel.featureGetContext(readStringField(args, 'feature_id')));
13
+ toolHandlers.register(TOOLS.FEATURE_STATE_GET, async (args) => kernel.featureStateGet(readStringField(args, 'feature_id')));
14
+ toolHandlers.register(TOOLS.FEATURE_STATE_PATCH, async (args) => kernel.featureStatePatch(readStringField(args, 'feature_id'), readNumberField(args, 'expected_version'), args.patch));
15
+ toolHandlers.register(TOOLS.FEATURE_LOG_APPEND, async (args, context) => kernel.featureLogAppend(readStringField(args, 'feature_id'), readStringField(args, 'note'), context));
16
+ toolHandlers.register(TOOLS.PLAN_SUBMIT, async (args) => kernel.planSubmit(readStringField(args, 'feature_id'), args.plan_json, readNumberField(args, 'expected_version')));
17
+ toolHandlers.register(TOOLS.PLAN_GET, async (args) => kernel.planGet(readStringField(args, 'feature_id')));
18
+ toolHandlers.register(TOOLS.PLAN_UPDATE, async (args) => kernel.planUpdate(readStringField(args, 'feature_id'), readNumberField(args, 'expected_plan_version'), args.plan_json));
19
+ toolHandlers.register(TOOLS.REPO_ENSURE_WORKTREE, async (args) => kernel.repoEnsureWorktree(readStringField(args, 'feature_id')));
20
+ toolHandlers.register(TOOLS.REPO_APPLY_PATCH, async (args) => kernel.repoApplyPatch(readStringField(args, 'feature_id'), readStringField(args, 'unified_diff')));
21
+ toolHandlers.register(TOOLS.REPO_STATUS, async (args) => kernel.repoStatus(readStringField(args, 'feature_id')));
22
+ toolHandlers.register(TOOLS.REPO_DIFF, async (args) => kernel.repoDiff(readStringField(args, 'feature_id'), asArray(args.options)));
23
+ toolHandlers.register(TOOLS.REPO_READ_FILE, async (args) => kernel.repoReadFile(readStringField(args, 'feature_id'), readStringField(args, 'path')));
24
+ toolHandlers.register(TOOLS.REPO_SEARCH, async (args) => kernel.repoSearch(readStringField(args, 'feature_id'), readStringField(args, 'query')));
25
+ toolHandlers.register(TOOLS.REPO_DIFF_BUNDLE, async (args) => kernel.repoDiffBundle(readStringField(args, 'feature_id')));
26
+ toolHandlers.register(TOOLS.FEATURE_READY_TO_MERGE, async (args) => kernel.featureReadyToMerge(readStringField(args, 'feature_id'), readStringField(args, 'commit_message'), readStringField(args, 'merge_strategy'), readStringField(args, 'user_approval_token')));
27
+ toolHandlers.register(TOOLS.FEATURE_DELETE, async (args) => kernel.featureDelete(readStringField(args, 'feature_id'), readBooleanField(args, 'dry_run'), readBooleanField(args, 'confirm'), readBooleanField(args, 'remove_worktree'), readStringField(args, 'remove_branch')));
28
+ toolHandlers.register(TOOLS.GATES_LIST, async (args) => kernel.gatesList(readStringField(args, 'profile')));
29
+ toolHandlers.register(TOOLS.GATES_RUN, async (args) => kernel.gatesRun(readStringField(args, 'feature_id'), readStringField(args, 'profile'), readStringField(args, 'mode')));
30
+ toolHandlers.register(TOOLS.EVIDENCE_LATEST, async (args) => kernel.evidenceLatest(readStringField(args, 'feature_id')));
31
+ toolHandlers.register(TOOLS.QA_TEST_INDEX_GET, async (args) => kernel.qaTestIndexGet(readStringField(args, 'feature_id')));
32
+ toolHandlers.register(TOOLS.QA_TEST_INDEX_UPDATE, async (args) => kernel.qaTestIndexUpdate(readStringField(args, 'feature_id'), readNumberField(args, 'expected_version'), args.updates, asArray(args.evidence_refs)));
33
+ toolHandlers.register(TOOLS.LOCKS_ACQUIRE, async (args) => kernel.locksAcquire(readStringField(args, 'resource'), readStringField(args, 'feature_id'), readNumberField(args, 'wait_timeout_seconds')));
34
+ toolHandlers.register(TOOLS.LOCKS_RELEASE, async (args) => kernel.locksRelease(readStringField(args, 'resource'), readStringField(args, 'feature_id')));
35
+ toolHandlers.register(TOOLS.COLLISIONS_SCAN, async () => kernel.collisionsScan());
36
+ toolHandlers.register(TOOLS.REPORT_DASHBOARD, async () => kernel.reportDashboard());
37
+ toolHandlers.register(TOOLS.REPORT_FEATURE_SUMMARY, async (args) => kernel.reportFeatureSummary(readStringField(args, 'feature_id')));
38
+ toolHandlers.register(TOOLS.FEATURE_SEND_MESSAGE, async (args) => kernel.featureSendMessage(readStringField(args, 'feature_id'), readStringField(args, 'message')));
39
+ toolHandlers.register(TOOLS.COST_RECORD, async (args) => kernel.costRecord(readStringField(args, 'feature_id') ?? '', typeof args.tokens_used_delta === 'number' ? args.tokens_used_delta : 0, typeof args.estimated_cost_usd_delta === 'number' ? args.estimated_cost_usd_delta : 0));
40
+ toolHandlers.register(TOOLS.COST_GET, async (args) => kernel.costGet(readStringField(args, 'feature_id')));
41
+ toolHandlers.register(TOOLS.PERFORMANCE_RECORD_OUTCOME, async (args) => kernel.performanceRecordOutcome(args));
42
+ toolHandlers.register(TOOLS.PERFORMANCE_GET_ANALYTICS, async (args) => kernel.performanceGetAnalytics(readStringField(args, 'provider'), readStringField(args, 'model')));
43
+ }
44
+ //# sourceMappingURL=kernel-tool-wiring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kernel-tool-wiring.js","sourceRoot":"","sources":["../../../../apps/control-plane/src/core/kernel-tool-wiring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,OAAO,GACR,MAAM,0BAA0B,CAAC;AA8ClC;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,YAAiC,EACjC,MAAwB;IAExB,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC/F,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACvD,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CACxD,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAC9D,MAAM,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAC9D,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAC5D,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAC5D,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAC9D,MAAM,CAAC,iBAAiB,CACtB,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,EACnC,eAAe,CAAC,IAAI,EAAE,kBAAkB,CAAC,EACzC,IAAI,CAAC,KAAK,CACX,CACF,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CACtE,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CACrG,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACtD,MAAM,CAAC,UAAU,CACf,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,EACnC,IAAI,CAAC,SAAS,EACd,eAAe,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAC1C,CACF,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACnD,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CACpD,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACtD,MAAM,CAAC,UAAU,CACf,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,EACnC,eAAe,CAAC,IAAI,EAAE,uBAAuB,CAAC,EAC9C,IAAI,CAAC,SAAS,CACf,CACF,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAC/D,MAAM,CAAC,kBAAkB,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAC/D,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAC3D,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,eAAe,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAClG,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACtD,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CACvD,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACpD,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,OAAO,CAAS,IAAI,CAAC,OAAO,CAAC,CAAC,CACpF,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACzD,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CACxF,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACtD,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CACvF,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAC3D,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAC3D,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACjE,MAAM,CAAC,mBAAmB,CACxB,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,EACnC,eAAe,CAAC,IAAI,EAAE,gBAAgB,CAAC,EACvC,eAAe,CAAC,IAAI,EAAE,gBAAgB,CAAC,EACvC,eAAe,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAC7C,CACF,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACzD,MAAM,CAAC,aAAa,CAClB,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,EACnC,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,EACjC,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,EACjC,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,CAAC,EACzC,eAAe,CAAC,IAAI,EAAE,eAAe,CAAC,CACvC,CACF,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACrD,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CACnD,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACpD,MAAM,CAAC,QAAQ,CACb,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,EACnC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,EAChC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAC9B,CACF,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAC1D,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAC3D,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAC5D,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAC3D,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAC/D,MAAM,CAAC,iBAAiB,CACtB,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,EACnC,eAAe,CAAC,IAAI,EAAE,kBAAkB,CAAC,EACzC,IAAI,CAAC,OAAO,EACZ,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAC5B,CACF,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACxD,MAAM,CAAC,YAAY,CACjB,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,EACjC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,EACnC,eAAe,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAC9C,CACF,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACxD,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAC5F,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IAClF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IACpF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACjE,MAAM,CAAC,oBAAoB,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CACjE,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAC/D,MAAM,CAAC,kBAAkB,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CACjG,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACtD,MAAM,CAAC,UAAU,CACf,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,EACzC,OAAO,IAAI,CAAC,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EACvE,OAAO,IAAI,CAAC,wBAAwB,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CACtF,CACF,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACnD,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CACpD,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACrE,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,CACtC,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACpE,MAAM,CAAC,uBAAuB,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAClG,CAAC;AACJ,CAAC"}
@@ -0,0 +1,48 @@
1
+ export type AnyRecord = Record<string, any>;
2
+ export interface KernelContext {
3
+ actor_type?: string;
4
+ actor_id?: string;
5
+ }
6
+ export interface KernelConfigOverrides {
7
+ policyPath?: string;
8
+ gatesPath?: string;
9
+ agentsPath?: string;
10
+ adaptersPath?: string;
11
+ }
12
+ export interface AgentsRoleConfig {
13
+ system_prompt_path?: string;
14
+ }
15
+ export interface AgentsRuntimeConfig {
16
+ execution_mode?: 'deterministic' | 'interactive' | string;
17
+ interactive?: {
18
+ watchdog_poll_interval_ms?: number;
19
+ checkpoint_interval_ms?: number;
20
+ max_uncommitted_changes?: number;
21
+ validation_on_checkpoint?: boolean;
22
+ revert_on_violation?: boolean;
23
+ violation_severity?: 'info' | 'warning' | 'error' | 'critical' | string;
24
+ shadow_workspace?: {
25
+ enabled?: boolean;
26
+ promotion_strategy?: 'atomic' | 'incremental' | string;
27
+ cleanup_on_failure?: boolean;
28
+ max_shadow_size_mb?: number;
29
+ };
30
+ };
31
+ default_provider?: string;
32
+ default_model?: string;
33
+ provider_config_env?: string;
34
+ default_agent_config?: Record<string, unknown>;
35
+ provider_configs?: Record<string, Record<string, unknown>>;
36
+ worker_provider_mode?: 'live' | 'stub' | string;
37
+ worker_response_timeout_ms?: number;
38
+ max_consecutive_no_progress_iterations?: number;
39
+ }
40
+ export interface AgentsConfigSnapshot {
41
+ version?: number;
42
+ roles?: Record<string, AgentsRoleConfig>;
43
+ missing_prompt_behavior?: 'ignore' | 'error' | string;
44
+ runtime?: AgentsRuntimeConfig;
45
+ }
46
+ export interface PolicyConfigSnapshot extends AnyRecord {
47
+ rbac?: Record<string, string[]>;
48
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=kernel-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kernel-types.js","sourceRoot":"","sources":["../../../../apps/control-plane/src/core/kernel-types.ts"],"names":[],"mappings":""}
@@ -3,43 +3,13 @@ import { type ToolResponse } from './response.js';
3
3
  import type { RuntimeSessionsSnapshot } from './runtime-sessions.js';
4
4
  import { ToolHandlerRegistry, ToolRouter, type ToolHandlerContext } from '../application/tools/tool-router.js';
5
5
  import { type AcquireRunLeaseInput } from '../application/services/run-lease-service.js';
6
+ import { type PatchValidationResult } from '../application/services/patch-service.js';
6
7
  import { CollisionQueueService } from '../application/services/collision-queue-service.js';
7
8
  import { type FeatureDeleteResult } from '../application/services/feature-deletion-service.js';
8
9
  import { type FeatureOutcome } from '../application/services/performance-analytics-service.js';
9
10
  import type { WorkerProvider } from '../providers/providers.js';
10
- type AnyRecord = Record<string, any>;
11
- interface KernelContext {
12
- actor_type?: string;
13
- actor_id?: string;
14
- }
15
- interface KernelConfigOverrides {
16
- policyPath?: string;
17
- gatesPath?: string;
18
- agentsPath?: string;
19
- adaptersPath?: string;
20
- }
21
- export interface AgentsRoleConfig {
22
- system_prompt_path?: string;
23
- }
24
- export interface AgentsRuntimeConfig {
25
- default_provider?: string;
26
- default_model?: string;
27
- provider_config_env?: string;
28
- default_agent_config?: Record<string, unknown>;
29
- provider_configs?: Record<string, Record<string, unknown>>;
30
- worker_provider_mode?: 'live' | 'stub' | string;
31
- worker_response_timeout_ms?: number;
32
- max_consecutive_no_progress_iterations?: number;
33
- }
34
- export interface AgentsConfigSnapshot {
35
- version?: number;
36
- roles?: Record<string, AgentsRoleConfig>;
37
- missing_prompt_behavior?: 'ignore' | 'error' | string;
38
- runtime?: AgentsRuntimeConfig;
39
- }
40
- interface PolicyConfigSnapshot extends AnyRecord {
41
- rbac?: Record<string, string[]>;
42
- }
11
+ import type { AnyRecord, KernelContext, KernelConfigOverrides, AgentsConfigSnapshot, PolicyConfigSnapshot } from './kernel-types.js';
12
+ export type { AgentsConfigSnapshot } from './kernel-types.js';
43
13
  /**
44
14
  * Deterministic orchestration kernel for multi-agent feature development.
45
15
  *
@@ -101,6 +71,8 @@ export declare class AopKernel {
101
71
  private readonly costTrackingService;
102
72
  private readonly performanceAnalyticsService;
103
73
  private readonly gateSelectionService;
74
+ private readonly repoOperationsService;
75
+ private readonly sendMessageService;
104
76
  private readonly pathLayout;
105
77
  readonly instanceId: string;
106
78
  private provider;
@@ -130,14 +102,12 @@ export declare class AopKernel {
130
102
  normalizeRuntimeSessions(value: unknown, at?: string): RuntimeSessionsSnapshot;
131
103
  normalizeIndexShape(value: unknown): AnyRecord;
132
104
  isRunLeaseFresh(runtimeSessions: RuntimeSessionsSnapshot): boolean;
133
- private resolveDefaultConfigPath;
134
105
  load(): Promise<void>;
135
106
  ensureLoaded(): Promise<void>;
136
107
  authorize(actorType: string, toolName: string): boolean;
137
108
  invoke(toolName: string, args?: AnyRecord, context?: KernelContext): Promise<AnyRecord>;
138
109
  normalizeError(error: unknown): ToolResponse;
139
110
  dispatchTool(toolName: string, args: AnyRecord, context: ToolHandlerContext): Promise<unknown>;
140
- private registerToolHandlers;
141
111
  featurePath(featureId: any): string;
142
112
  featureLockPath(featureId: any): string;
143
113
  statePath(featureId: any): string;
@@ -157,6 +127,7 @@ export declare class AopKernel {
157
127
  branch: any;
158
128
  worktree_path: string;
159
129
  status: "planning";
130
+ execution_mode: string;
160
131
  gate_profile: string;
161
132
  gates: {
162
133
  plan: "na";
@@ -183,6 +154,7 @@ export declare class AopKernel {
183
154
  builder: "ready";
184
155
  qa: "ready";
185
156
  };
157
+ checkpoints: any[];
186
158
  last_updated: string;
187
159
  };
188
160
  readState(featureId: string): Promise<{
@@ -335,8 +307,8 @@ export declare class AopKernel {
335
307
  }>;
336
308
  repoEnsureWorktree(featureId: any): Promise<{
337
309
  data: {
338
- feature_id: any;
339
- branch: any;
310
+ feature_id: string;
311
+ branch: string;
340
312
  worktree_path_abs: string;
341
313
  existed: boolean;
342
314
  };
@@ -353,30 +325,31 @@ export declare class AopKernel {
353
325
  qa_index_version: number;
354
326
  };
355
327
  }>;
328
+ validatePatchDiff(featureId: string, parsedDiff: unknown): Promise<PatchValidationResult>;
356
329
  repoStatus(featureId: any): Promise<{
357
330
  data: {
358
- feature_id: any;
331
+ feature_id: string;
359
332
  branch: string;
360
333
  status_porcelain: string[];
361
334
  };
362
335
  }>;
363
336
  repoDiff(featureId: any, options?: any[]): Promise<{
364
337
  data: {
365
- feature_id: any;
338
+ feature_id: string;
366
339
  diff: string;
367
340
  };
368
341
  }>;
369
342
  repoReadFile(featureId: any, filePath: any): Promise<{
370
343
  data: {
371
- feature_id: any;
344
+ feature_id: string;
372
345
  path: string;
373
346
  content: string;
374
347
  };
375
348
  }>;
376
349
  repoSearch(featureId: any, query: any): Promise<{
377
350
  data: {
378
- feature_id: any;
379
- query: any;
351
+ feature_id: string;
352
+ query: string;
380
353
  matches: ({
381
354
  raw: string;
382
355
  path?: undefined;
@@ -392,13 +365,11 @@ export declare class AopKernel {
392
365
  }>;
393
366
  repoDiffBundle(featureId: any): Promise<{
394
367
  data: {
395
- feature_id: any;
368
+ feature_id: string;
396
369
  diff_stat: string;
397
370
  diff: string;
398
371
  touched_files: string[];
399
- last_gate_summary: {
400
- [x: string]: any;
401
- };
372
+ last_gate_summary: unknown;
402
373
  };
403
374
  }>;
404
375
  gatesList(profileName?: any): Promise<{
@@ -514,7 +485,6 @@ export declare class AopKernel {
514
485
  active: unknown;
515
486
  };
516
487
  }>;
517
- private waitForSessionToBecomeActive;
518
488
  featureSendMessage(featureId: string | null, message: string | null): Promise<unknown>;
519
489
  costRecord(featureId: string, tokensDelta: number, costUsdDelta: number): Promise<{
520
490
  ok: true;
@@ -540,4 +510,3 @@ export declare class AopKernel {
540
510
  };
541
511
  }>;
542
512
  }
543
- export {};