@orc-brain/core 1.0.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 (126) hide show
  1. package/LICENSE +21 -0
  2. package/dist/autoLoop.d.ts +70 -0
  3. package/dist/autoLoop.d.ts.map +1 -0
  4. package/dist/autoLoop.js +178 -0
  5. package/dist/autoLoop.js.map +1 -0
  6. package/dist/backpressure.d.ts +38 -0
  7. package/dist/backpressure.d.ts.map +1 -0
  8. package/dist/backpressure.js +103 -0
  9. package/dist/backpressure.js.map +1 -0
  10. package/dist/budgetTracker.d.ts +53 -0
  11. package/dist/budgetTracker.d.ts.map +1 -0
  12. package/dist/budgetTracker.js +93 -0
  13. package/dist/budgetTracker.js.map +1 -0
  14. package/dist/config.d.ts +9 -0
  15. package/dist/config.d.ts.map +1 -0
  16. package/dist/config.js +107 -0
  17. package/dist/config.js.map +1 -0
  18. package/dist/escalation.d.ts +43 -0
  19. package/dist/escalation.d.ts.map +1 -0
  20. package/dist/escalation.js +81 -0
  21. package/dist/escalation.js.map +1 -0
  22. package/dist/eventBus.d.ts +30 -0
  23. package/dist/eventBus.d.ts.map +1 -0
  24. package/dist/eventBus.js +42 -0
  25. package/dist/eventBus.js.map +1 -0
  26. package/dist/goalJudge.d.ts +92 -0
  27. package/dist/goalJudge.d.ts.map +1 -0
  28. package/dist/goalJudge.js +254 -0
  29. package/dist/goalJudge.js.map +1 -0
  30. package/dist/index.d.ts +30 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +30 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/modelRouter.d.ts +40 -0
  35. package/dist/modelRouter.d.ts.map +1 -0
  36. package/dist/modelRouter.js +114 -0
  37. package/dist/modelRouter.js.map +1 -0
  38. package/dist/orchestrator.d.ts +242 -0
  39. package/dist/orchestrator.d.ts.map +1 -0
  40. package/dist/orchestrator.js +975 -0
  41. package/dist/orchestrator.js.map +1 -0
  42. package/dist/pacing.d.ts +34 -0
  43. package/dist/pacing.d.ts.map +1 -0
  44. package/dist/pacing.js +49 -0
  45. package/dist/pacing.js.map +1 -0
  46. package/dist/planValidation.d.ts +24 -0
  47. package/dist/planValidation.d.ts.map +1 -0
  48. package/dist/planValidation.js +134 -0
  49. package/dist/planValidation.js.map +1 -0
  50. package/dist/planner.d.ts +70 -0
  51. package/dist/planner.d.ts.map +1 -0
  52. package/dist/planner.js +210 -0
  53. package/dist/planner.js.map +1 -0
  54. package/dist/plugins/host.d.ts +39 -0
  55. package/dist/plugins/host.d.ts.map +1 -0
  56. package/dist/plugins/host.js +109 -0
  57. package/dist/plugins/host.js.map +1 -0
  58. package/dist/plugins/registry.d.ts +71 -0
  59. package/dist/plugins/registry.d.ts.map +1 -0
  60. package/dist/plugins/registry.js +269 -0
  61. package/dist/plugins/registry.js.map +1 -0
  62. package/dist/plugins/secrets.d.ts +30 -0
  63. package/dist/plugins/secrets.d.ts.map +1 -0
  64. package/dist/plugins/secrets.js +99 -0
  65. package/dist/plugins/secrets.js.map +1 -0
  66. package/dist/preflight.d.ts +38 -0
  67. package/dist/preflight.d.ts.map +1 -0
  68. package/dist/preflight.js +108 -0
  69. package/dist/preflight.js.map +1 -0
  70. package/dist/reporting.d.ts +41 -0
  71. package/dist/reporting.d.ts.map +1 -0
  72. package/dist/reporting.js +229 -0
  73. package/dist/reporting.js.map +1 -0
  74. package/dist/safety/denyRules.d.ts +57 -0
  75. package/dist/safety/denyRules.d.ts.map +1 -0
  76. package/dist/safety/denyRules.js +498 -0
  77. package/dist/safety/denyRules.js.map +1 -0
  78. package/dist/safety/envClassifier.d.ts +45 -0
  79. package/dist/safety/envClassifier.d.ts.map +1 -0
  80. package/dist/safety/envClassifier.js +99 -0
  81. package/dist/safety/envClassifier.js.map +1 -0
  82. package/dist/safety/index.d.ts +83 -0
  83. package/dist/safety/index.d.ts.map +1 -0
  84. package/dist/safety/index.js +184 -0
  85. package/dist/safety/index.js.map +1 -0
  86. package/dist/safety/limitSignals.d.ts +36 -0
  87. package/dist/safety/limitSignals.d.ts.map +1 -0
  88. package/dist/safety/limitSignals.js +79 -0
  89. package/dist/safety/limitSignals.js.map +1 -0
  90. package/dist/safety/paths.d.ts +32 -0
  91. package/dist/safety/paths.d.ts.map +1 -0
  92. package/dist/safety/paths.js +102 -0
  93. package/dist/safety/paths.js.map +1 -0
  94. package/dist/safety/redact.d.ts +17 -0
  95. package/dist/safety/redact.d.ts.map +1 -0
  96. package/dist/safety/redact.js +85 -0
  97. package/dist/safety/redact.js.map +1 -0
  98. package/dist/spawnEnv.d.ts +18 -0
  99. package/dist/spawnEnv.d.ts.map +1 -0
  100. package/dist/spawnEnv.js +43 -0
  101. package/dist/spawnEnv.js.map +1 -0
  102. package/dist/store/auditLog.d.ts +28 -0
  103. package/dist/store/auditLog.d.ts.map +1 -0
  104. package/dist/store/auditLog.js +48 -0
  105. package/dist/store/auditLog.js.map +1 -0
  106. package/dist/store/index.d.ts +140 -0
  107. package/dist/store/index.d.ts.map +1 -0
  108. package/dist/store/index.js +648 -0
  109. package/dist/store/index.js.map +1 -0
  110. package/dist/store/schema.d.ts +17 -0
  111. package/dist/store/schema.d.ts.map +1 -0
  112. package/dist/store/schema.js +197 -0
  113. package/dist/store/schema.js.map +1 -0
  114. package/dist/system.d.ts +69 -0
  115. package/dist/system.d.ts.map +1 -0
  116. package/dist/system.js +135 -0
  117. package/dist/system.js.map +1 -0
  118. package/dist/workerManager.d.ts +80 -0
  119. package/dist/workerManager.d.ts.map +1 -0
  120. package/dist/workerManager.js +280 -0
  121. package/dist/workerManager.js.map +1 -0
  122. package/dist/worktrees.d.ts +74 -0
  123. package/dist/worktrees.d.ts.map +1 -0
  124. package/dist/worktrees.js +210 -0
  125. package/dist/worktrees.js.map +1 -0
  126. package/package.json +48 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Proactive dispatch pacing (spec 002 §R14). A sliding 60-minute window of
3
+ * dispatch timestamps enforces `budget.max_tasks_per_hour` BEFORE a worker
4
+ * spawns — unlike {@link Backpressure}, which reacts to provider limit signals
5
+ * after the fact. Pure and clock-injected: every method takes `now`, so tests
6
+ * never sleep. The window is global (the subscription is shared across runs).
7
+ */
8
+ /** Sliding-window length: the "per hour" in max_tasks_per_hour. */
9
+ export declare const PACER_WINDOW_MS: number;
10
+ /** Verdict of a pacing check. `resume_at` is when a slot frees up. */
11
+ export type PacerVerdict = {
12
+ ok: true;
13
+ } | {
14
+ ok: false;
15
+ resume_at: Date;
16
+ };
17
+ /** Sliding-window dispatch pacer (spec 002 §R14). */
18
+ export declare class DispatchPacer {
19
+ private readonly maxPerHour;
20
+ /** Epoch ms of dispatches inside the current window, oldest first. */
21
+ private dispatches;
22
+ /** `maxPerHour <= 0` disables the throttle entirely. */
23
+ constructor(maxPerHour: number);
24
+ /** Records a dispatch at `now`. Call once per spawned worker. */
25
+ recordDispatch(now: Date): void;
26
+ /**
27
+ * True when another dispatch fits in the window; otherwise the time the
28
+ * oldest blocking dispatch ages out and one slot frees.
29
+ */
30
+ check(now: Date): PacerVerdict;
31
+ /** Drops timestamps that have aged out of the window. */
32
+ private prune;
33
+ }
34
+ //# sourceMappingURL=pacing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pacing.d.ts","sourceRoot":"","sources":["../src/pacing.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,mEAAmE;AACnE,eAAO,MAAM,eAAe,QAAiB,CAAC;AAE9C,sEAAsE;AACtE,MAAM,MAAM,YAAY,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAE,CAAC;AAEzE,qDAAqD;AACrD,qBAAa,aAAa;IAKZ,OAAO,CAAC,QAAQ,CAAC,UAAU;IAJvC,sEAAsE;IACtE,OAAO,CAAC,UAAU,CAAgB;IAElC,wDAAwD;gBAC3B,UAAU,EAAE,MAAM;IAE/C,iEAAiE;IACjE,cAAc,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI;IAK/B;;;OAGG;IACH,KAAK,CAAC,GAAG,EAAE,IAAI,GAAG,YAAY;IAS9B,yDAAyD;IACzD,OAAO,CAAC,KAAK;CAQd"}
package/dist/pacing.js ADDED
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Proactive dispatch pacing (spec 002 §R14). A sliding 60-minute window of
3
+ * dispatch timestamps enforces `budget.max_tasks_per_hour` BEFORE a worker
4
+ * spawns — unlike {@link Backpressure}, which reacts to provider limit signals
5
+ * after the fact. Pure and clock-injected: every method takes `now`, so tests
6
+ * never sleep. The window is global (the subscription is shared across runs).
7
+ */
8
+ /** Sliding-window length: the "per hour" in max_tasks_per_hour. */
9
+ export const PACER_WINDOW_MS = 60 * 60 * 1000;
10
+ /** Sliding-window dispatch pacer (spec 002 §R14). */
11
+ export class DispatchPacer {
12
+ maxPerHour;
13
+ /** Epoch ms of dispatches inside the current window, oldest first. */
14
+ dispatches = [];
15
+ /** `maxPerHour <= 0` disables the throttle entirely. */
16
+ constructor(maxPerHour) {
17
+ this.maxPerHour = maxPerHour;
18
+ }
19
+ /** Records a dispatch at `now`. Call once per spawned worker. */
20
+ recordDispatch(now) {
21
+ this.dispatches.push(now.getTime());
22
+ this.prune(now);
23
+ }
24
+ /**
25
+ * True when another dispatch fits in the window; otherwise the time the
26
+ * oldest blocking dispatch ages out and one slot frees.
27
+ */
28
+ check(now) {
29
+ if (this.maxPerHour <= 0)
30
+ return { ok: true };
31
+ this.prune(now);
32
+ if (this.dispatches.length < this.maxPerHour)
33
+ return { ok: true };
34
+ // One more fits once the entry at (len - max) leaves the window.
35
+ const blocking = this.dispatches[this.dispatches.length - this.maxPerHour];
36
+ return { ok: false, resume_at: new Date(blocking + PACER_WINDOW_MS) };
37
+ }
38
+ /** Drops timestamps that have aged out of the window. */
39
+ prune(now) {
40
+ const cutoff = now.getTime() - PACER_WINDOW_MS;
41
+ let drop = 0;
42
+ while (drop < this.dispatches.length && this.dispatches[drop] <= cutoff) {
43
+ drop++;
44
+ }
45
+ if (drop > 0)
46
+ this.dispatches = this.dispatches.slice(drop);
47
+ }
48
+ }
49
+ //# sourceMappingURL=pacing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pacing.js","sourceRoot":"","sources":["../src/pacing.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,mEAAmE;AACnE,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAK9C,qDAAqD;AACrD,MAAM,OAAO,aAAa;IAKK;IAJ7B,sEAAsE;IAC9D,UAAU,GAAa,EAAE,CAAC;IAElC,wDAAwD;IACxD,YAA6B,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAAG,CAAC;IAEnD,iEAAiE;IACjE,cAAc,CAAC,GAAS;QACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,GAAS;QACb,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QAClE,iEAAiE;QACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAE,CAAC;QAC5E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,EAAE,CAAC;IACxE,CAAC;IAED,yDAAyD;IACjD,KAAK,CAAC,GAAS;QACrB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,eAAe,CAAC;QAC/C,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,OAAO,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAE,IAAI,MAAM,EAAE,CAAC;YACzE,IAAI,EAAE,CAAC;QACT,CAAC;QACD,IAAI,IAAI,GAAG,CAAC;YAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;CACF"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Plan validation (§3, §15 Phase 2). A small hand-written validator — matching
3
+ * the codebase's dependency-light style — that checks a Planner candidate
4
+ * against the data model before it is materialized: required fields, enum
5
+ * membership, and that every `depends_on` reference resolves to a sibling in
6
+ * the plan (an unresolved edge would strand a task forever). Cycle detection is
7
+ * left to the orchestrator's dependency gate, which simply never marks a cyclic
8
+ * task ready; validation here catches the structural errors worth failing fast.
9
+ */
10
+ import type { Plan } from "@orc-brain/shared";
11
+ /** Result of {@link validatePlan}: a validated plan or a list of reasons. */
12
+ export type PlanValidation = {
13
+ ok: true;
14
+ plan: Plan;
15
+ } | {
16
+ ok: false;
17
+ errors: string[];
18
+ };
19
+ /**
20
+ * Validates a Planner candidate and returns a typed {@link Plan} on success.
21
+ * Also checks scope-level `depends_on` references resolve to other scope names.
22
+ */
23
+ export declare function validatePlan(candidate: unknown): PlanValidation;
24
+ //# sourceMappingURL=planValidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planValidation.d.ts","sourceRoot":"","sources":["../src/planValidation.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAGV,IAAI,EAKL,MAAM,mBAAmB,CAAC;AAwB3B,6EAA6E;AAC7E,MAAM,MAAM,cAAc,GACxB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AA2F7D;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,OAAO,GAAG,cAAc,CA6B/D"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Plan validation (§3, §15 Phase 2). A small hand-written validator — matching
3
+ * the codebase's dependency-light style — that checks a Planner candidate
4
+ * against the data model before it is materialized: required fields, enum
5
+ * membership, and that every `depends_on` reference resolves to a sibling in
6
+ * the plan (an unresolved edge would strand a task forever). Cycle detection is
7
+ * left to the orchestrator's dependency gate, which simply never marks a cyclic
8
+ * task ready; validation here catches the structural errors worth failing fast.
9
+ */
10
+ const MODEL_TIERS = ["haiku", "sonnet", "opus", "auto"];
11
+ const ENVIRONMENTS = [
12
+ "development",
13
+ "staging",
14
+ "production",
15
+ "unknown",
16
+ ];
17
+ const PERMISSION_MODES = [
18
+ "plan",
19
+ "default",
20
+ "acceptEdits",
21
+ ];
22
+ const TASK_TYPES = [
23
+ "mechanical",
24
+ "codegen",
25
+ "refactor",
26
+ "test",
27
+ "review",
28
+ "planning",
29
+ "research",
30
+ ];
31
+ function isStringArray(v) {
32
+ return Array.isArray(v) && v.every((x) => typeof x === "string");
33
+ }
34
+ /** Validates a single planned task, appending any problems to `errors`. */
35
+ function validateTask(t, where, errors) {
36
+ if (typeof t !== "object" || t === null) {
37
+ errors.push(`${where}: task is not an object`);
38
+ return;
39
+ }
40
+ const task = t;
41
+ if (typeof task.title !== "string" || !task.title.trim()) {
42
+ errors.push(`${where}: task.title missing`);
43
+ }
44
+ if (typeof task.prompt !== "string" || !task.prompt.trim()) {
45
+ errors.push(`${where}: task.prompt missing`);
46
+ }
47
+ if (!TASK_TYPES.includes(task.task_type)) {
48
+ errors.push(`${where}: invalid task_type ${String(task.task_type)}`);
49
+ }
50
+ if (task.depends_on !== undefined && !isStringArray(task.depends_on)) {
51
+ errors.push(`${where}: task.depends_on must be a string[]`);
52
+ }
53
+ }
54
+ /** Validates a single planned scope, appending any problems to `errors`. */
55
+ function validateScope(s, index, errors) {
56
+ const where = `scopes[${index}]`;
57
+ if (typeof s !== "object" || s === null) {
58
+ errors.push(`${where}: scope is not an object`);
59
+ return;
60
+ }
61
+ const scope = s;
62
+ if (typeof scope.name !== "string" || !scope.name.trim()) {
63
+ errors.push(`${where}: name missing`);
64
+ }
65
+ if (typeof scope.description !== "string") {
66
+ errors.push(`${where}: description missing`);
67
+ }
68
+ if (!isStringArray(scope.path_allowlist) ||
69
+ scope.path_allowlist.length === 0) {
70
+ errors.push(`${where}: path_allowlist must be a non-empty string[]`);
71
+ }
72
+ if (!isStringArray(scope.allowed_tools)) {
73
+ errors.push(`${where}: allowed_tools must be a string[]`);
74
+ }
75
+ if (!MODEL_TIERS.includes(scope.model_tier)) {
76
+ errors.push(`${where}: invalid model_tier ${String(scope.model_tier)}`);
77
+ }
78
+ if (!ENVIRONMENTS.includes(scope.environment)) {
79
+ errors.push(`${where}: invalid environment ${String(scope.environment)}`);
80
+ }
81
+ if (!PERMISSION_MODES.includes(scope.permission_mode)) {
82
+ errors.push(`${where}: invalid permission_mode ${String(scope.permission_mode)} ` +
83
+ `(bypassPermissions is not representable, §8.3)`);
84
+ }
85
+ if (typeof scope.max_budget_usd !== "number" || scope.max_budget_usd < 0) {
86
+ errors.push(`${where}: max_budget_usd must be a non-negative number`);
87
+ }
88
+ if (!Array.isArray(scope.tasks) || scope.tasks.length === 0) {
89
+ errors.push(`${where}: tasks must be a non-empty array`);
90
+ }
91
+ else {
92
+ scope.tasks.forEach((t, i) => validateTask(t, `${where}.tasks[${i}]`, errors));
93
+ // Task depends_on must reference sibling titles within this scope.
94
+ const titles = new Set(scope.tasks
95
+ .map((t) => t?.title)
96
+ .filter((x) => typeof x === "string"));
97
+ scope.tasks.forEach((t, i) => {
98
+ for (const dep of t?.depends_on ?? []) {
99
+ if (!titles.has(dep)) {
100
+ errors.push(`${where}.tasks[${i}]: depends_on "${dep}" has no matching sibling task`);
101
+ }
102
+ }
103
+ });
104
+ }
105
+ }
106
+ /**
107
+ * Validates a Planner candidate and returns a typed {@link Plan} on success.
108
+ * Also checks scope-level `depends_on` references resolve to other scope names.
109
+ */
110
+ export function validatePlan(candidate) {
111
+ const errors = [];
112
+ if (typeof candidate !== "object" || candidate === null) {
113
+ return { ok: false, errors: ["plan is not an object"] };
114
+ }
115
+ const obj = candidate;
116
+ if (!Array.isArray(obj.scopes) || obj.scopes.length === 0) {
117
+ return { ok: false, errors: ["plan.scopes must be a non-empty array"] };
118
+ }
119
+ obj.scopes.forEach((s, i) => validateScope(s, i, errors));
120
+ const scopeNames = new Set(obj.scopes
121
+ .map((s) => s?.name)
122
+ .filter((x) => typeof x === "string"));
123
+ obj.scopes.forEach((s, i) => {
124
+ for (const dep of s?.depends_on ?? []) {
125
+ if (!scopeNames.has(dep)) {
126
+ errors.push(`scopes[${i}]: depends_on "${dep}" has no matching scope name`);
127
+ }
128
+ }
129
+ });
130
+ if (errors.length > 0)
131
+ return { ok: false, errors };
132
+ return { ok: true, plan: candidate };
133
+ }
134
+ //# sourceMappingURL=planValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planValidation.js","sourceRoot":"","sources":["../src/planValidation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Planner (§3, §15 Phase 2). Decomposes a Goal into a proposed Scope/Task DAG
3
+ * via a dedicated SDK session pinned to Opus, `permissionMode: "plan"`, with
4
+ * read-only tools ({@link PlannerConfig.allowed_tools}) — it may inspect the
5
+ * repo to plan but can never edit, run Bash, or dispatch. The plan is emitted
6
+ * as structured output (`outputFormat: json_schema`), validated against the
7
+ * data model, and returned inert for human approval. The Planner never executes
8
+ * and never dispatches (that is the Orchestrator's job).
9
+ */
10
+ import type { Options, Query } from "@anthropic-ai/claude-agent-sdk";
11
+ import type { Goal, OrchestratorConfig, Plan } from "@orc-brain/shared";
12
+ /** Injectable SDK entrypoint, so tests can substitute a fake planning stream. */
13
+ export type PlanQueryFn = (params: {
14
+ prompt: string;
15
+ options?: Options;
16
+ }) => Query;
17
+ /** Raised when the Planner session finished without a usable plan. */
18
+ export declare class PlannerError extends Error {
19
+ constructor(message: string);
20
+ }
21
+ /** Builds the plan-only session prompt from a Goal (§3 input: Goal + repo). */
22
+ export declare function buildPlanPrompt(goal: Goal): string;
23
+ /**
24
+ * Context fed to a re-plan cycle (autonomous-loop.md §3.3, G2): a digest of
25
+ * completed work and the criteria still unmet per the last evaluation.
26
+ */
27
+ export interface ReplanContext {
28
+ /** Human-readable lines of completed work (scope/task + result summary). */
29
+ completedDigest: string[];
30
+ /** Success criteria still unmet, from the last evaluator verdict. */
31
+ unmetCriteria: string[];
32
+ }
33
+ /**
34
+ * Builds the re-plan prompt (autonomous-loop.md §3.3). Same read-only plan-mode
35
+ * framing as {@link buildPlanPrompt}, but asks for *additional* scopes/tasks to
36
+ * close the gap to the unmet criteria, given what the completed scopes produced.
37
+ * New scopes express `depends_on` only among themselves — earlier scopes are
38
+ * already complete, so referencing them would be an always-satisfied no-op (and
39
+ * the within-plan validator would reject a dangling reference).
40
+ */
41
+ export declare function buildReplanPrompt(goal: Goal, context: ReplanContext): string;
42
+ /** The plan-only Opus session (§3). */
43
+ export declare class Planner {
44
+ private readonly config;
45
+ private readonly queryFn;
46
+ constructor(config: OrchestratorConfig, queryFn?: PlanQueryFn);
47
+ /**
48
+ * Runs the plan-only session for a goal and returns a validated {@link Plan}.
49
+ * Throws {@link PlannerError} if the session yields no valid plan.
50
+ */
51
+ plan(goal: Goal): Promise<Plan>;
52
+ /**
53
+ * Runs a re-plan cycle (autonomous-loop.md §3.3, G2): a plan-only session that
54
+ * proposes *additional* scopes/tasks to close the unmet criteria, given a
55
+ * digest of completed work. Same read-only, subscription-only session as
56
+ * {@link plan}; returns a validated {@link Plan} (possibly with zero scopes,
57
+ * which the controller treats as the no-progress signal).
58
+ */
59
+ replan(goal: Goal, context: ReplanContext): Promise<Plan>;
60
+ /**
61
+ * Shared plan-only session runner (§3): pinned to Opus, read-only tools,
62
+ * structured output, provider credentials stripped so planning stays on the
63
+ * subscription (§2). Streams the session, extracts the plan candidate, and
64
+ * validates it. When `allowEmpty` (re-plan only), a `{ scopes: [] }` result is
65
+ * accepted as the "no further work" signal instead of failing validation
66
+ * (which requires a non-empty scopes array for a fresh plan).
67
+ */
68
+ private runSession;
69
+ }
70
+ //# sourceMappingURL=planner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../src/planner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EACV,OAAO,EACP,KAAK,EAEN,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAKxE,iFAAiF;AACjF,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,KAAK,KAAK,CAAC;AAEZ,sEAAsE;AACtE,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAI5B;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAqClD;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,4EAA4E;IAC5E,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,qEAAqE;IACrE,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAoC5E;AA0BD,uCAAuC;AACvC,qBAAa,OAAO;IAIhB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;gBAGnB,MAAM,EAAE,kBAAkB,EAC3C,OAAO,CAAC,EAAE,WAAW;IAKvB;;;OAGG;IACG,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC;;;;;;OAMG;IACG,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/D;;;;;;;OAOG;YACW,UAAU;CAyDzB"}
@@ -0,0 +1,210 @@
1
+ /**
2
+ * Planner (§3, §15 Phase 2). Decomposes a Goal into a proposed Scope/Task DAG
3
+ * via a dedicated SDK session pinned to Opus, `permissionMode: "plan"`, with
4
+ * read-only tools ({@link PlannerConfig.allowed_tools}) — it may inspect the
5
+ * repo to plan but can never edit, run Bash, or dispatch. The plan is emitted
6
+ * as structured output (`outputFormat: json_schema`), validated against the
7
+ * data model, and returned inert for human approval. The Planner never executes
8
+ * and never dispatches (that is the Orchestrator's job).
9
+ */
10
+ import { query as sdkQuery } from "@anthropic-ai/claude-agent-sdk";
11
+ import { PLAN_JSON_SCHEMA } from "@orc-brain/shared";
12
+ import { buildSpawnEnv } from "./spawnEnv.js";
13
+ import { validatePlan } from "./planValidation.js";
14
+ /** Raised when the Planner session finished without a usable plan. */
15
+ export class PlannerError extends Error {
16
+ constructor(message) {
17
+ super(message);
18
+ this.name = "PlannerError";
19
+ }
20
+ }
21
+ /** Builds the plan-only session prompt from a Goal (§3 input: Goal + repo). */
22
+ export function buildPlanPrompt(goal) {
23
+ const criteria = goal.success_criteria
24
+ .map((c) => `- ${c.description}`)
25
+ .join("\n");
26
+ const constraints = goal.constraints.map((c) => `- ${c}`).join("\n");
27
+ const outOfScope = goal.out_of_scope.map((c) => `- ${c}`).join("\n");
28
+ return [
29
+ "You are the planning brain of a local orchestrator. Decompose the goal",
30
+ "below into a DAG of bounded scopes, each holding one or more atomic tasks.",
31
+ "You are in read-only plan mode: inspect the repository with Read/Glob/Grep",
32
+ "to ground the plan, but do not edit anything or run commands.",
33
+ "",
34
+ `# Goal: ${goal.title}`,
35
+ `Repository root: ${goal.repo_root}`,
36
+ "",
37
+ "## Objective",
38
+ goal.objective,
39
+ "",
40
+ criteria ? `## Success criteria\n${criteria}` : "",
41
+ constraints ? `## Constraints (must be honored)\n${constraints}` : "",
42
+ outOfScope ? `## Out of scope (must not be touched)\n${outOfScope}` : "",
43
+ "",
44
+ "## Planning rules",
45
+ "- Each scope is a unit of safety config: give it the tightest",
46
+ " `path_allowlist`, minimal `allowed_tools`, and correct `environment`",
47
+ " (use `development` only when certain; prefer `unknown` when unsure — it",
48
+ " is treated as production).",
49
+ '- Prefer `permission_mode: "default"`; never request bypass.',
50
+ "- Size tasks small and give each a precise, self-contained `prompt`.",
51
+ "- Label each task's `task_type` so the model router can pick a model.",
52
+ "- Express dependencies by name: scope `depends_on` references other scope",
53
+ " names; task `depends_on` references sibling task titles in the same scope.",
54
+ "",
55
+ "Return the plan as structured JSON matching the provided schema.",
56
+ ]
57
+ .filter(Boolean)
58
+ .join("\n");
59
+ }
60
+ /**
61
+ * Builds the re-plan prompt (autonomous-loop.md §3.3). Same read-only plan-mode
62
+ * framing as {@link buildPlanPrompt}, but asks for *additional* scopes/tasks to
63
+ * close the gap to the unmet criteria, given what the completed scopes produced.
64
+ * New scopes express `depends_on` only among themselves — earlier scopes are
65
+ * already complete, so referencing them would be an always-satisfied no-op (and
66
+ * the within-plan validator would reject a dangling reference).
67
+ */
68
+ export function buildReplanPrompt(goal, context) {
69
+ const digest = context.completedDigest.map((d) => `- ${d}`).join("\n");
70
+ const unmet = context.unmetCriteria.map((c) => `- ${c}`).join("\n");
71
+ return [
72
+ "You are the planning brain of a local orchestrator, mid-run. Earlier scopes",
73
+ "have completed; below is a digest of what they produced and which success",
74
+ "criteria remain UNMET. Propose ONLY the additional scopes/tasks needed to",
75
+ "close the remaining gap — do not repeat already-completed work.",
76
+ "You are in read-only plan mode: inspect the repository with Read/Glob/Grep",
77
+ "to ground the plan, but do not edit anything or run commands.",
78
+ "",
79
+ `# Goal: ${goal.title}`,
80
+ `Repository root: ${goal.repo_root}`,
81
+ "",
82
+ "## Objective",
83
+ goal.objective,
84
+ "",
85
+ digest
86
+ ? `## Completed so far (results)\n${digest}`
87
+ : "## Completed so far\n(none)",
88
+ "",
89
+ unmet ? `## Unmet success criteria (close these)\n${unmet}` : "",
90
+ "",
91
+ "## Planning rules",
92
+ "- Emit ONLY new scopes/tasks; the DAG already contains the completed ones.",
93
+ "- Express dependencies only among the NEW scopes you emit here (by name);",
94
+ " the earlier scopes are already complete, so do not reference them.",
95
+ "- Same safety discipline as a fresh plan: tightest `path_allowlist`, minimal",
96
+ " `allowed_tools`, correct `environment`, never request bypass.",
97
+ "- If no further work is needed to meet the criteria, return an empty scopes",
98
+ " list.",
99
+ "",
100
+ "Return the plan as structured JSON matching the provided schema.",
101
+ ]
102
+ .filter(Boolean)
103
+ .join("\n");
104
+ }
105
+ /**
106
+ * Extracts a {@link Plan} candidate from an SDK stream: prefers the result
107
+ * message's `structured_output`, and falls back to parsing a fenced JSON block
108
+ * out of the final text so the Planner still works if structured output is
109
+ * unavailable on a given CLI build.
110
+ */
111
+ function parsePlanCandidate(structured, finalText) {
112
+ if (structured && typeof structured === "object")
113
+ return structured;
114
+ const fenced = finalText.match(/```(?:json)?\s*([\s\S]*?)```/i);
115
+ const raw = fenced ? fenced[1] : finalText;
116
+ const start = raw.indexOf("{");
117
+ const end = raw.lastIndexOf("}");
118
+ if (start === -1 || end === -1 || end < start) {
119
+ throw new PlannerError("planner produced no parseable plan JSON");
120
+ }
121
+ try {
122
+ return JSON.parse(raw.slice(start, end + 1));
123
+ }
124
+ catch (err) {
125
+ throw new PlannerError(`planner JSON did not parse: ${err instanceof Error ? err.message : err}`);
126
+ }
127
+ }
128
+ /** The plan-only Opus session (§3). */
129
+ export class Planner {
130
+ config;
131
+ queryFn;
132
+ constructor(config, queryFn) {
133
+ this.config = config;
134
+ this.queryFn = queryFn ?? sdkQuery;
135
+ }
136
+ /**
137
+ * Runs the plan-only session for a goal and returns a validated {@link Plan}.
138
+ * Throws {@link PlannerError} if the session yields no valid plan.
139
+ */
140
+ async plan(goal) {
141
+ return this.runSession(goal.repo_root, buildPlanPrompt(goal), false);
142
+ }
143
+ /**
144
+ * Runs a re-plan cycle (autonomous-loop.md §3.3, G2): a plan-only session that
145
+ * proposes *additional* scopes/tasks to close the unmet criteria, given a
146
+ * digest of completed work. Same read-only, subscription-only session as
147
+ * {@link plan}; returns a validated {@link Plan} (possibly with zero scopes,
148
+ * which the controller treats as the no-progress signal).
149
+ */
150
+ async replan(goal, context) {
151
+ return this.runSession(goal.repo_root, buildReplanPrompt(goal, context), true);
152
+ }
153
+ /**
154
+ * Shared plan-only session runner (§3): pinned to Opus, read-only tools,
155
+ * structured output, provider credentials stripped so planning stays on the
156
+ * subscription (§2). Streams the session, extracts the plan candidate, and
157
+ * validates it. When `allowEmpty` (re-plan only), a `{ scopes: [] }` result is
158
+ * accepted as the "no further work" signal instead of failing validation
159
+ * (which requires a non-empty scopes array for a fresh plan).
160
+ */
161
+ async runSession(cwd, prompt, allowEmpty) {
162
+ const options = {
163
+ cwd,
164
+ model: this.config.planner.model,
165
+ permissionMode: "plan",
166
+ allowedTools: this.config.planner.allowed_tools,
167
+ maxTurns: this.config.planner.max_turns,
168
+ outputFormat: { type: "json_schema", schema: PLAN_JSON_SCHEMA },
169
+ // Strip provider credentials so planning also stays on subscription (§2).
170
+ env: buildSpawnEnv(),
171
+ };
172
+ const q = this.queryFn({ prompt, options });
173
+ let structured;
174
+ let finalText = "";
175
+ for await (const message of q) {
176
+ if (message.type === "assistant") {
177
+ for (const block of (message.message?.content ?? [])) {
178
+ const b = block;
179
+ if (b.type === "text" && b.text)
180
+ finalText += b.text;
181
+ }
182
+ }
183
+ else if (message.type === "result") {
184
+ if (message.subtype !== "success") {
185
+ throw new PlannerError(`planner session failed: ${message.subtype}`);
186
+ }
187
+ structured = message
188
+ .structured_output;
189
+ finalText = message.result ?? finalText;
190
+ }
191
+ }
192
+ const candidate = parsePlanCandidate(structured, finalText);
193
+ // Re-plan may legitimately conclude "nothing more to do" (autonomous-loop.md
194
+ // §3.3): accept an explicit empty scopes list without tripping the
195
+ // non-empty-scopes rule that a fresh plan requires.
196
+ if (allowEmpty &&
197
+ candidate &&
198
+ typeof candidate === "object" &&
199
+ Array.isArray(candidate.scopes) &&
200
+ candidate.scopes.length === 0) {
201
+ return { scopes: [] };
202
+ }
203
+ const validation = validatePlan(candidate);
204
+ if (!validation.ok) {
205
+ throw new PlannerError(`planner produced an invalid plan: ${validation.errors.join("; ")}`);
206
+ }
207
+ return validation.plan;
208
+ }
209
+ }
210
+ //# sourceMappingURL=planner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner.js","sourceRoot":"","sources":["../src/planner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAOnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQnD,sEAAsE;AACtE,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,+EAA+E;AAC/E,MAAM,UAAU,eAAe,CAAC,IAAU;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB;SACnC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;SAChC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,OAAO;QACL,wEAAwE;QACxE,4EAA4E;QAC5E,4EAA4E;QAC5E,+DAA+D;QAC/D,EAAE;QACF,WAAW,IAAI,CAAC,KAAK,EAAE;QACvB,oBAAoB,IAAI,CAAC,SAAS,EAAE;QACpC,EAAE;QACF,cAAc;QACd,IAAI,CAAC,SAAS;QACd,EAAE;QACF,QAAQ,CAAC,CAAC,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE;QAClD,WAAW,CAAC,CAAC,CAAC,qCAAqC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE;QACrE,UAAU,CAAC,CAAC,CAAC,0CAA0C,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE;QACxE,EAAE;QACF,mBAAmB;QACnB,+DAA+D;QAC/D,wEAAwE;QACxE,2EAA2E;QAC3E,8BAA8B;QAC9B,8DAA8D;QAC9D,sEAAsE;QACtE,uEAAuE;QACvE,2EAA2E;QAC3E,8EAA8E;QAC9E,EAAE;QACF,kEAAkE;KACnE;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAaD;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAU,EAAE,OAAsB;IAClE,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpE,OAAO;QACL,6EAA6E;QAC7E,2EAA2E;QAC3E,2EAA2E;QAC3E,iEAAiE;QACjE,4EAA4E;QAC5E,+DAA+D;QAC/D,EAAE;QACF,WAAW,IAAI,CAAC,KAAK,EAAE;QACvB,oBAAoB,IAAI,CAAC,SAAS,EAAE;QACpC,EAAE;QACF,cAAc;QACd,IAAI,CAAC,SAAS;QACd,EAAE;QACF,MAAM;YACJ,CAAC,CAAC,kCAAkC,MAAM,EAAE;YAC5C,CAAC,CAAC,6BAA6B;QACjC,EAAE;QACF,KAAK,CAAC,CAAC,CAAC,4CAA4C,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;QAChE,EAAE;QACF,mBAAmB;QACnB,4EAA4E;QAC5E,2EAA2E;QAC3E,sEAAsE;QACtE,8EAA8E;QAC9E,iEAAiE;QACjE,6EAA6E;QAC7E,SAAS;QACT,EAAE;QACF,kEAAkE;KACnE;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,UAAmB,EAAE,SAAiB;IAChE,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ;QAAE,OAAO,UAAU,CAAC;IACpE,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAChE,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5C,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,KAAK,EAAE,CAAC;QAC9C,MAAM,IAAI,YAAY,CAAC,yCAAyC,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,YAAY,CACpB,+BAA+B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAC1E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,uCAAuC;AACvC,MAAM,OAAO,OAAO;IAIC;IAHF,OAAO,CAAc;IAEtC,YACmB,MAA0B,EAC3C,OAAqB;QADJ,WAAM,GAAN,MAAM,CAAoB;QAG3C,IAAI,CAAC,OAAO,GAAG,OAAO,IAAK,QAAmC,CAAC;IACjE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,IAAU;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IACvE,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,CAAC,IAAU,EAAE,OAAsB;QAC7C,OAAO,IAAI,CAAC,UAAU,CACpB,IAAI,CAAC,SAAS,EACd,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,EAChC,IAAI,CACL,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,UAAU,CACtB,GAAW,EACX,MAAc,EACd,UAAmB;QAEnB,MAAM,OAAO,GAAY;YACvB,GAAG;YACH,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK;YAChC,cAAc,EAAE,MAAM;YACtB,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa;YAC/C,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS;YACvC,YAAY,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,gBAAgB,EAAE;YAC/D,0EAA0E;YAC1E,GAAG,EAAE,aAAa,EAAwC;SAC3D,CAAC;QAEF,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAE5C,IAAI,UAAmB,CAAC;QACxB,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,CAA8B,EAAE,CAAC;YAC3D,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACjC,KAAK,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAc,EAAE,CAAC;oBAClE,MAAM,CAAC,GAAG,KAAwC,CAAC;oBACnD,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI;wBAAE,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC;gBACvD,CAAC;YACH,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrC,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBAClC,MAAM,IAAI,YAAY,CAAC,2BAA2B,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;gBACvE,CAAC;gBACD,UAAU,GAAI,OAA2C;qBACtD,iBAAiB,CAAC;gBACrB,SAAS,GAAI,OAA+B,CAAC,MAAM,IAAI,SAAS,CAAC;YACnE,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,kBAAkB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC5D,6EAA6E;QAC7E,mEAAmE;QACnE,oDAAoD;QACpD,IACE,UAAU;YACV,SAAS;YACT,OAAO,SAAS,KAAK,QAAQ;YAC7B,KAAK,CAAC,OAAO,CAAE,SAAkC,CAAC,MAAM,CAAC;YACxD,SAAmC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EACxD,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACxB,CAAC;QACD,MAAM,UAAU,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YACnB,MAAM,IAAI,YAAY,CACpB,qCAAqC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpE,CAAC;QACJ,CAAC;QACD,OAAO,UAAU,CAAC,IAAI,CAAC;IACzB,CAAC;CACF"}