@paths.design/caws-cli 11.0.0 → 11.1.1

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 (119) hide show
  1. package/README.md +2 -2
  2. package/dist/index.js +2 -2
  3. package/dist/init/harness-detect.d.ts +18 -0
  4. package/dist/init/harness-detect.d.ts.map +1 -0
  5. package/dist/init/harness-detect.js +90 -0
  6. package/dist/init/harness-detect.js.map +1 -0
  7. package/dist/init/hook-install.d.ts +53 -0
  8. package/dist/init/hook-install.d.ts.map +1 -0
  9. package/dist/init/hook-install.js +421 -0
  10. package/dist/init/hook-install.js.map +1 -0
  11. package/dist/init/hook-packs/manifest-claude-code.d.ts +4 -0
  12. package/dist/init/hook-packs/manifest-claude-code.d.ts.map +1 -0
  13. package/dist/init/hook-packs/manifest-claude-code.js +190 -0
  14. package/dist/init/hook-packs/manifest-claude-code.js.map +1 -0
  15. package/dist/init/hook-packs/register.d.ts +19 -0
  16. package/dist/init/hook-packs/register.d.ts.map +1 -0
  17. package/dist/init/hook-packs/register.js +37 -0
  18. package/dist/init/hook-packs/register.js.map +1 -0
  19. package/dist/init/hook-packs/types.d.ts +123 -0
  20. package/dist/init/hook-packs/types.d.ts.map +1 -0
  21. package/dist/init/hook-packs/types.js +29 -0
  22. package/dist/init/hook-packs/types.js.map +1 -0
  23. package/dist/shell/commands/gates.d.ts.map +1 -1
  24. package/dist/shell/commands/gates.js +28 -1
  25. package/dist/shell/commands/gates.js.map +1 -1
  26. package/dist/shell/commands/init.d.ts +9 -0
  27. package/dist/shell/commands/init.d.ts.map +1 -1
  28. package/dist/shell/commands/init.js +131 -27
  29. package/dist/shell/commands/init.js.map +1 -1
  30. package/dist/shell/commands/specs.d.ts +41 -0
  31. package/dist/shell/commands/specs.d.ts.map +1 -0
  32. package/dist/shell/commands/specs.js +264 -0
  33. package/dist/shell/commands/specs.js.map +1 -0
  34. package/dist/shell/commands/worktree.d.ts +38 -0
  35. package/dist/shell/commands/worktree.d.ts.map +1 -0
  36. package/dist/shell/commands/worktree.js +286 -0
  37. package/dist/shell/commands/worktree.js.map +1 -0
  38. package/dist/shell/gates/disposition.d.ts.map +1 -1
  39. package/dist/shell/gates/disposition.js +33 -3
  40. package/dist/shell/gates/disposition.js.map +1 -1
  41. package/dist/shell/gates/local-evaluators/budget-limit.d.ts +24 -0
  42. package/dist/shell/gates/local-evaluators/budget-limit.d.ts.map +1 -0
  43. package/dist/shell/gates/local-evaluators/budget-limit.js +67 -0
  44. package/dist/shell/gates/local-evaluators/budget-limit.js.map +1 -0
  45. package/dist/shell/gates/local-evaluators/diff-helpers.d.ts +25 -0
  46. package/dist/shell/gates/local-evaluators/diff-helpers.d.ts.map +1 -0
  47. package/dist/shell/gates/local-evaluators/diff-helpers.js +74 -0
  48. package/dist/shell/gates/local-evaluators/diff-helpers.js.map +1 -0
  49. package/dist/shell/gates/local-evaluators/index.d.ts +28 -0
  50. package/dist/shell/gates/local-evaluators/index.d.ts.map +1 -0
  51. package/dist/shell/gates/local-evaluators/index.js +67 -0
  52. package/dist/shell/gates/local-evaluators/index.js.map +1 -0
  53. package/dist/shell/gates/local-evaluators/scope-boundary.d.ts +23 -0
  54. package/dist/shell/gates/local-evaluators/scope-boundary.d.ts.map +1 -0
  55. package/dist/shell/gates/local-evaluators/scope-boundary.js +67 -0
  56. package/dist/shell/gates/local-evaluators/scope-boundary.js.map +1 -0
  57. package/dist/shell/gates/local-evaluators/spec-completeness.d.ts +12 -0
  58. package/dist/shell/gates/local-evaluators/spec-completeness.d.ts.map +1 -0
  59. package/dist/shell/gates/local-evaluators/spec-completeness.js +73 -0
  60. package/dist/shell/gates/local-evaluators/spec-completeness.js.map +1 -0
  61. package/dist/shell/index.d.ts +4 -0
  62. package/dist/shell/index.d.ts.map +1 -1
  63. package/dist/shell/index.js +13 -1
  64. package/dist/shell/index.js.map +1 -1
  65. package/dist/shell/register.d.ts.map +1 -1
  66. package/dist/shell/register.js +192 -2
  67. package/dist/shell/register.js.map +1 -1
  68. package/dist/shell/render/init-hook-pack.d.ts +16 -0
  69. package/dist/shell/render/init-hook-pack.d.ts.map +1 -0
  70. package/dist/shell/render/init-hook-pack.js +206 -0
  71. package/dist/shell/render/init-hook-pack.js.map +1 -0
  72. package/dist/store/atomic-write.d.ts +20 -2
  73. package/dist/store/atomic-write.d.ts.map +1 -1
  74. package/dist/store/atomic-write.js +44 -2
  75. package/dist/store/atomic-write.js.map +1 -1
  76. package/dist/store/lifecycle-lock.d.ts +34 -0
  77. package/dist/store/lifecycle-lock.d.ts.map +1 -0
  78. package/dist/store/lifecycle-lock.js +168 -0
  79. package/dist/store/lifecycle-lock.js.map +1 -0
  80. package/dist/store/lifecycle-transaction.d.ts +79 -0
  81. package/dist/store/lifecycle-transaction.d.ts.map +1 -0
  82. package/dist/store/lifecycle-transaction.js +319 -0
  83. package/dist/store/lifecycle-transaction.js.map +1 -0
  84. package/dist/store/rules.d.ts +16 -0
  85. package/dist/store/rules.d.ts.map +1 -1
  86. package/dist/store/rules.js +17 -0
  87. package/dist/store/rules.js.map +1 -1
  88. package/dist/store/specs-writer.d.ts +61 -0
  89. package/dist/store/specs-writer.d.ts.map +1 -0
  90. package/dist/store/specs-writer.js +506 -0
  91. package/dist/store/specs-writer.js.map +1 -0
  92. package/dist/store/worktrees-writer.d.ts +77 -0
  93. package/dist/store/worktrees-writer.d.ts.map +1 -0
  94. package/dist/store/worktrees-writer.js +674 -0
  95. package/dist/store/worktrees-writer.js.map +1 -0
  96. package/dist/store/yaml-patch.d.ts +7 -0
  97. package/dist/store/yaml-patch.d.ts.map +1 -0
  98. package/dist/store/yaml-patch.js +250 -0
  99. package/dist/store/yaml-patch.js.map +1 -0
  100. package/package.json +7 -4
  101. package/templates/hook-packs/claude-code/CLAUDE.md +172 -0
  102. package/templates/hook-packs/claude-code/audit.sh +121 -0
  103. package/templates/hook-packs/claude-code/block-dangerous.sh +158 -0
  104. package/templates/hook-packs/claude-code/classify_command.py +1064 -0
  105. package/templates/hook-packs/claude-code/dispatch/post_tool_use.sh +63 -0
  106. package/templates/hook-packs/claude-code/dispatch/pre_tool_use.sh +50 -0
  107. package/templates/hook-packs/claude-code/dispatch/session_start.sh +41 -0
  108. package/templates/hook-packs/claude-code/dispatch/stop.sh +37 -0
  109. package/templates/hook-packs/claude-code/guard-strikes.sh +140 -0
  110. package/templates/hook-packs/claude-code/lib/parse-input.sh +127 -0
  111. package/templates/hook-packs/claude-code/lib/run-handlers.sh +212 -0
  112. package/templates/hook-packs/claude-code/reset-danger-latch.sh +21 -0
  113. package/templates/hook-packs/claude-code/reset-strikes.sh +243 -0
  114. package/templates/hook-packs/claude-code/runtime-paths.sh +80 -0
  115. package/templates/hook-packs/claude-code/scope-guard.sh +392 -0
  116. package/templates/hook-packs/claude-code/session-caws-status.sh +171 -0
  117. package/templates/hook-packs/claude-code/session-log.sh +180 -0
  118. package/templates/hook-packs/claude-code/worktree-guard.sh +240 -0
  119. package/templates/hook-packs/claude-code/worktree-write-guard.sh +77 -0
@@ -0,0 +1,286 @@
1
+ "use strict";
2
+ // `caws worktree` command group — v11 worktree lifecycle commands.
3
+ //
4
+ // CLI-WORKTREE-001: canonical replacement for hand-edited
5
+ // .caws/worktrees.json. Five subcommands:
6
+ // - caws worktree create <name> --spec <id>
7
+ // - caws worktree list
8
+ // - caws worktree bind <name> --spec <id>
9
+ // - caws worktree destroy <name> [--abandon-unmerged]
10
+ // - caws worktree merge <name> [--dry-run]
11
+ //
12
+ // Discipline:
13
+ // - All mutation paths go through worktrees-writer (which uses the
14
+ // lifecycle-transaction substrate + applyRegistryPatch).
15
+ // - Destroy is non-forceful. There is NO --force. The only override
16
+ // is --abandon-unmerged, which still respects ownership and clean
17
+ // working tree.
18
+ // - Merge auto-closes the bound spec through specs-writer.closeSpec.
19
+ // The shell does not call appendEvent directly.
20
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ var desc = Object.getOwnPropertyDescriptor(m, k);
23
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
24
+ desc = { enumerable: true, get: function() { return m[k]; } };
25
+ }
26
+ Object.defineProperty(o, k2, desc);
27
+ }) : (function(o, m, k, k2) {
28
+ if (k2 === undefined) k2 = k;
29
+ o[k2] = m[k];
30
+ }));
31
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
32
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
33
+ }) : function(o, v) {
34
+ o["default"] = v;
35
+ });
36
+ var __importStar = (this && this.__importStar) || (function () {
37
+ var ownKeys = function(o) {
38
+ ownKeys = Object.getOwnPropertyNames || function (o) {
39
+ var ar = [];
40
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
41
+ return ar;
42
+ };
43
+ return ownKeys(o);
44
+ };
45
+ return function (mod) {
46
+ if (mod && mod.__esModule) return mod;
47
+ var result = {};
48
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
49
+ __setModuleDefault(result, mod);
50
+ return result;
51
+ };
52
+ })();
53
+ Object.defineProperty(exports, "__esModule", { value: true });
54
+ exports.runWorktreeCreateCommand = runWorktreeCreateCommand;
55
+ exports.runWorktreeListCommand = runWorktreeListCommand;
56
+ exports.runWorktreeBindCommand = runWorktreeBindCommand;
57
+ exports.runWorktreeDestroyCommand = runWorktreeDestroyCommand;
58
+ exports.runWorktreeMergeCommand = runWorktreeMergeCommand;
59
+ const path = __importStar(require("node:path"));
60
+ const caws_kernel_1 = require("@paths.design/caws-kernel");
61
+ const store_1 = require("../../store");
62
+ const worktrees_writer_1 = require("../../store/worktrees-writer");
63
+ const actor_1 = require("../session/actor");
64
+ const resolve_session_1 = require("../session/resolve-session");
65
+ const diagnostic_1 = require("../render/diagnostic");
66
+ function setupIO(opts) {
67
+ const cwd = opts.cwd ?? process.cwd();
68
+ const nowFn = opts.now ?? (() => new Date());
69
+ const env = opts.env ?? process.env;
70
+ const out = opts.out ?? ((s) => process.stdout.write(s + '\n'));
71
+ const errFn = opts.err ?? ((s) => process.stderr.write(s + '\n'));
72
+ const showData = opts.showData === true;
73
+ return { cwd, nowFn, env, out, err: errFn, showData };
74
+ }
75
+ function resolveCawsCtx(cwd, errFn, showData, cmd) {
76
+ const r = (0, store_1.resolveRepoRoot)(cwd);
77
+ if (!r.ok) {
78
+ errFn(`caws worktree ${cmd}: failed to resolve repo root.`);
79
+ errFn((0, diagnostic_1.renderDiagnostics)(r.errors, { showData }));
80
+ return null;
81
+ }
82
+ return { repoRoot: r.value.repoRoot, cawsDir: r.value.cawsDir };
83
+ }
84
+ function buildActorPair(cawsDir, cwd, env, nowFn, actorKind, errFn, showData, cmd) {
85
+ const sessionResult = (0, resolve_session_1.resolveSession)({
86
+ cawsDir,
87
+ worktreeRoot: cwd,
88
+ env,
89
+ now: nowFn,
90
+ allowMint: true,
91
+ });
92
+ if (!sessionResult.ok) {
93
+ errFn(`caws worktree ${cmd}: failed to resolve session identity.`);
94
+ errFn((0, diagnostic_1.renderDiagnostics)(sessionResult.errors, { showData }));
95
+ return null;
96
+ }
97
+ const actor = (0, actor_1.buildActor)({
98
+ session: sessionResult.value,
99
+ kind: actorKind ?? 'agent',
100
+ });
101
+ return {
102
+ session: {
103
+ session_id: sessionResult.value.identity.session_id,
104
+ ...(sessionResult.value.identity.platform !== undefined
105
+ ? { platform: sessionResult.value.identity.platform }
106
+ : {}),
107
+ },
108
+ actor,
109
+ };
110
+ }
111
+ function runWorktreeCreateCommand(opts) {
112
+ const { cwd, nowFn, env, out, err, showData } = setupIO(opts);
113
+ const ctx = resolveCawsCtx(cwd, err, showData, 'create');
114
+ if (ctx === null)
115
+ return 2;
116
+ const id = buildActorPair(ctx.cawsDir, cwd, env, nowFn, opts.actorKind, err, showData, 'create');
117
+ if (id === null)
118
+ return 2;
119
+ const input = {
120
+ name: opts.name,
121
+ specId: opts.specId,
122
+ session: id.session,
123
+ actor: id.actor,
124
+ now: nowFn,
125
+ };
126
+ if (opts.baseBranch !== undefined)
127
+ input.baseBranch = opts.baseBranch;
128
+ if (opts.branch !== undefined)
129
+ input.branch = opts.branch;
130
+ const result = (0, worktrees_writer_1.createWorktree)(ctx.cawsDir, input);
131
+ if (!(0, caws_kernel_1.isOk)(result)) {
132
+ err('caws worktree create: failed.');
133
+ err((0, diagnostic_1.renderDiagnostics)(result.errors, { showData }));
134
+ return 1;
135
+ }
136
+ const outcome = result.value;
137
+ if (outcome.kind === 'partial_failure_recovered') {
138
+ err('caws worktree create: partial failure recovered (no state change).');
139
+ err((0, diagnostic_1.renderDiagnostics)(outcome.cause, { showData }));
140
+ return 1;
141
+ }
142
+ if (outcome.kind === 'dry_run') {
143
+ err('caws worktree create: unexpected dry_run outcome from createWorktree.');
144
+ return 2;
145
+ }
146
+ const wtPath = outcome.data?.path ?? '';
147
+ out(`created ${outcome.name} at ${path.relative(ctx.repoRoot, String(wtPath))} (spec: ${opts.specId})`);
148
+ return 0;
149
+ }
150
+ function runWorktreeListCommand(opts = {}) {
151
+ const { cwd, out, err, showData } = setupIO(opts);
152
+ const ctx = resolveCawsCtx(cwd, err, showData, 'list');
153
+ if (ctx === null)
154
+ return 2;
155
+ const result = (0, worktrees_writer_1.listWorktreesPretty)(ctx.cawsDir);
156
+ if (!(0, caws_kernel_1.isOk)(result)) {
157
+ err('caws worktree list: failed.');
158
+ err((0, diagnostic_1.renderDiagnostics)(result.errors, { showData }));
159
+ return 1;
160
+ }
161
+ if (result.value.entries.length === 0) {
162
+ out('(no worktrees registered)');
163
+ return 0;
164
+ }
165
+ for (const entry of result.value.entries) {
166
+ const rel = path.relative(ctx.repoRoot, entry.path);
167
+ const ownerStr = entry.owner ? entry.owner.session_id.slice(0, 8) : 'unowned';
168
+ const specStr = entry.specId ?? '(unbound)';
169
+ out(`${entry.name.padEnd(28)} ${entry.branch.padEnd(20)} → ${entry.baseBranch.padEnd(12)} spec=${specStr.padEnd(20)} owner=${ownerStr.padEnd(10)} ${rel}`);
170
+ }
171
+ return 0;
172
+ }
173
+ function runWorktreeBindCommand(opts) {
174
+ const { cwd, nowFn, env, out, err, showData } = setupIO(opts);
175
+ const ctx = resolveCawsCtx(cwd, err, showData, 'bind');
176
+ if (ctx === null)
177
+ return 2;
178
+ const id = buildActorPair(ctx.cawsDir, cwd, env, nowFn, opts.actorKind, err, showData, 'bind');
179
+ if (id === null)
180
+ return 2;
181
+ const result = (0, worktrees_writer_1.bindWorktreeRepair)(ctx.cawsDir, {
182
+ name: opts.name,
183
+ specId: opts.specId,
184
+ session: id.session,
185
+ actor: id.actor,
186
+ now: nowFn,
187
+ });
188
+ if (!(0, caws_kernel_1.isOk)(result)) {
189
+ err('caws worktree bind: failed.');
190
+ err((0, diagnostic_1.renderDiagnostics)(result.errors, { showData }));
191
+ return 1;
192
+ }
193
+ const outcome = result.value;
194
+ if (outcome.kind === 'partial_failure_recovered') {
195
+ err('caws worktree bind: partial failure recovered (no state change).');
196
+ err((0, diagnostic_1.renderDiagnostics)(outcome.cause, { showData }));
197
+ return 1;
198
+ }
199
+ if (outcome.kind === 'dry_run') {
200
+ err('caws worktree bind: unexpected dry_run outcome.');
201
+ return 2;
202
+ }
203
+ out(`bound ${outcome.name} → ${opts.specId}`);
204
+ return 0;
205
+ }
206
+ function runWorktreeDestroyCommand(opts) {
207
+ const { cwd, nowFn, env, out, err, showData } = setupIO(opts);
208
+ const ctx = resolveCawsCtx(cwd, err, showData, 'destroy');
209
+ if (ctx === null)
210
+ return 2;
211
+ const id = buildActorPair(ctx.cawsDir, cwd, env, nowFn, opts.actorKind, err, showData, 'destroy');
212
+ if (id === null)
213
+ return 2;
214
+ const input = {
215
+ name: opts.name,
216
+ session: id.session,
217
+ actor: id.actor,
218
+ now: nowFn,
219
+ };
220
+ if (opts.abandonUnmerged === true)
221
+ input.abandonUnmerged = true;
222
+ const result = (0, worktrees_writer_1.destroyWorktree)(ctx.cawsDir, input);
223
+ if (!(0, caws_kernel_1.isOk)(result)) {
224
+ err('caws worktree destroy: failed.');
225
+ err((0, diagnostic_1.renderDiagnostics)(result.errors, { showData }));
226
+ return 1;
227
+ }
228
+ const outcome = result.value;
229
+ if (outcome.kind === 'partial_failure_recovered') {
230
+ err('caws worktree destroy: partial failure recovered (no state change).');
231
+ err((0, diagnostic_1.renderDiagnostics)(outcome.cause, { showData }));
232
+ return 1;
233
+ }
234
+ if (outcome.kind === 'dry_run') {
235
+ err('caws worktree destroy: unexpected dry_run outcome.');
236
+ return 2;
237
+ }
238
+ out(`destroyed ${outcome.name}`);
239
+ return 0;
240
+ }
241
+ function runWorktreeMergeCommand(opts) {
242
+ const { cwd, nowFn, env, out, err, showData } = setupIO(opts);
243
+ const ctx = resolveCawsCtx(cwd, err, showData, 'merge');
244
+ if (ctx === null)
245
+ return 2;
246
+ const id = buildActorPair(ctx.cawsDir, cwd, env, nowFn, opts.actorKind, err, showData, 'merge');
247
+ if (id === null)
248
+ return 2;
249
+ const input = {
250
+ name: opts.name,
251
+ session: id.session,
252
+ actor: id.actor,
253
+ now: nowFn,
254
+ };
255
+ if (opts.dryRun === true)
256
+ input.dryRun = true;
257
+ if (opts.message !== undefined)
258
+ input.message = opts.message;
259
+ const result = (0, worktrees_writer_1.mergeWorktree)(ctx.cawsDir, input);
260
+ if (!(0, caws_kernel_1.isOk)(result)) {
261
+ err('caws worktree merge: failed.');
262
+ err((0, diagnostic_1.renderDiagnostics)(result.errors, { showData }));
263
+ return 1;
264
+ }
265
+ const outcome = result.value;
266
+ if (outcome.kind === 'partial_failure_recovered') {
267
+ err('caws worktree merge: partial failure recovered (no state change).');
268
+ err((0, diagnostic_1.renderDiagnostics)(outcome.cause, { showData }));
269
+ return 1;
270
+ }
271
+ if (outcome.kind === 'dry_run') {
272
+ if (outcome.canProceed) {
273
+ out(`caws worktree merge ${outcome.name} --dry-run: ready to merge.`);
274
+ }
275
+ else {
276
+ err(`caws worktree merge ${outcome.name} --dry-run: NOT ready to merge.`);
277
+ for (const f of outcome.findings)
278
+ err(` - ${f}`);
279
+ return 1;
280
+ }
281
+ return 0;
282
+ }
283
+ out(`merged ${outcome.name} (merge_commit: ${outcome.data?.merge_commit}; auto_closed_spec: ${outcome.data?.spec_id})`);
284
+ return 0;
285
+ }
286
+ //# sourceMappingURL=worktree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../../src/shell/commands/worktree.ts"],"names":[],"mappings":";AAAA,mEAAmE;AACnE,EAAE;AACF,0DAA0D;AAC1D,0CAA0C;AAC1C,8CAA8C;AAC9C,yBAAyB;AACzB,4CAA4C;AAC5C,wDAAwD;AACxD,6CAA6C;AAC7C,EAAE;AACF,cAAc;AACd,qEAAqE;AACrE,6DAA6D;AAC7D,sEAAsE;AACtE,sEAAsE;AACtE,oBAAoB;AACpB,uEAAuE;AACvE,oDAAoD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmGpD,4DAuCC;AAMD,wDAwBC;AASD,wDA+BC;AASD,8DAkCC;AAUD,0DA0CC;AA7SD,gDAAkC;AAElC,2DAAiE;AAEjE,uCAA8C;AAC9C,mEAMsC;AACtC,4CAA8C;AAC9C,gEAA4D;AAC5D,qDAAyD;AAYzD,SAAS,OAAO,CAAC,IAAwB;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;IACxC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACxD,CAAC;AAED,SAAS,cAAc,CACrB,GAAW,EACX,KAA6B,EAC7B,QAAiB,EACjB,GAAW;IAEX,MAAM,CAAC,GAAG,IAAA,uBAAe,EAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACV,KAAK,CAAC,iBAAiB,GAAG,gCAAgC,CAAC,CAAC;QAC5D,KAAK,CAAC,IAAA,8BAAiB,EAAC,CAAC,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,cAAc,CACrB,OAAe,EACf,GAAW,EACX,GAAsB,EACtB,KAAiB,EACjB,SAAgC,EAChC,KAA6B,EAC7B,QAAiB,EACjB,GAAW;IAEX,MAAM,aAAa,GAAG,IAAA,gCAAc,EAAC;QACnC,OAAO;QACP,YAAY,EAAE,GAAG;QACjB,GAAG;QACH,GAAG,EAAE,KAAK;QACV,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;IACH,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;QACtB,KAAK,CAAC,iBAAiB,GAAG,uCAAuC,CAAC,CAAC;QACnE,KAAK,CAAC,IAAA,8BAAiB,EAAC,aAAa,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,IAAA,kBAAU,EAAC;QACvB,OAAO,EAAE,aAAa,CAAC,KAAK;QAC5B,IAAI,EAAE,SAAS,IAAI,OAAO;KAC3B,CAAC,CAAC;IACH,OAAO;QACL,OAAO,EAAE;YACP,UAAU,EAAE,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU;YACnD,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS;gBACrD,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE;gBACrD,CAAC,CAAC,EAAE,CAAC;SACR;QACD,KAAK;KACN,CAAC;AACJ,CAAC;AAWD,SAAgB,wBAAwB,CAAC,IAA2B;IAClE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACzD,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IAC3B,MAAM,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjG,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IAE1B,MAAM,KAAK,GAAyC;QAClD,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,EAAE,CAAC,OAAO;QACnB,KAAK,EAAE,EAAE,CAAC,KAAK;QACf,GAAG,EAAE,KAAK;KACX,CAAC;IACF,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;QAC9B,KAAiC,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IAClE,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;QAAG,KAA6B,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAEnF,MAAM,MAAM,GAAG,IAAA,iCAAc,EAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAClD,IAAI,CAAC,IAAA,kBAAI,EAAC,MAAM,CAAC,EAAE,CAAC;QAClB,GAAG,CAAC,+BAA+B,CAAC,CAAC;QACrC,GAAG,CAAC,IAAA,8BAAiB,EAAC,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;IAC7B,IAAI,OAAO,CAAC,IAAI,KAAK,2BAA2B,EAAE,CAAC;QACjD,GAAG,CAAC,oEAAoE,CAAC,CAAC;QAC1E,GAAG,CAAC,IAAA,8BAAiB,EAAC,OAAO,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,GAAG,CAAC,uEAAuE,CAAC,CAAC;QAC7E,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;IACxC,GAAG,CACD,WAAW,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,IAAI,CAAC,MAAM,GAAG,CACnG,CAAC;IACF,OAAO,CAAC,CAAC;AACX,CAAC;AAMD,SAAgB,sBAAsB,CAAC,OAA4B,EAAE;IACnE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACvD,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IAE3B,MAAM,MAAM,GAAG,IAAA,sCAAmB,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,IAAA,kBAAI,EAAC,MAAM,CAAC,EAAE,CAAC;QAClB,GAAG,CAAC,6BAA6B,CAAC,CAAC;QACnC,GAAG,CAAC,IAAA,8BAAiB,EAAC,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACjC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9E,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,IAAI,WAAW,CAAC;QAC5C,GAAG,CACD,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CACtJ,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AASD,SAAgB,sBAAsB,CAAC,IAAyB;IAC9D,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACvD,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IAC3B,MAAM,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/F,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IAE1B,MAAM,MAAM,GAAG,IAAA,qCAAkB,EAAC,GAAG,CAAC,OAAO,EAAE;QAC7C,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,EAAE,CAAC,OAAO;QACnB,KAAK,EAAE,EAAE,CAAC,KAAK;QACf,GAAG,EAAE,KAAK;KACX,CAAC,CAAC;IACH,IAAI,CAAC,IAAA,kBAAI,EAAC,MAAM,CAAC,EAAE,CAAC;QAClB,GAAG,CAAC,6BAA6B,CAAC,CAAC;QACnC,GAAG,CAAC,IAAA,8BAAiB,EAAC,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;IAC7B,IAAI,OAAO,CAAC,IAAI,KAAK,2BAA2B,EAAE,CAAC;QACjD,GAAG,CAAC,kEAAkE,CAAC,CAAC;QACxE,GAAG,CAAC,IAAA,8BAAiB,EAAC,OAAO,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,GAAG,CAAC,iDAAiD,CAAC,CAAC;QACvD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,GAAG,CAAC,SAAS,OAAO,CAAC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,CAAC;AACX,CAAC;AASD,SAAgB,yBAAyB,CAAC,IAA4B;IACpE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC1D,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IAC3B,MAAM,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAClG,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IAE1B,MAAM,KAAK,GAA0C;QACnD,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,EAAE,CAAC,OAAO;QACnB,KAAK,EAAE,EAAE,CAAC,KAAK;QACf,GAAG,EAAE,KAAK;KACX,CAAC;IACF,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI;QAC9B,KAAuC,CAAC,eAAe,GAAG,IAAI,CAAC;IAElE,MAAM,MAAM,GAAG,IAAA,kCAAe,EAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACnD,IAAI,CAAC,IAAA,kBAAI,EAAC,MAAM,CAAC,EAAE,CAAC;QAClB,GAAG,CAAC,gCAAgC,CAAC,CAAC;QACtC,GAAG,CAAC,IAAA,8BAAiB,EAAC,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;IAC7B,IAAI,OAAO,CAAC,IAAI,KAAK,2BAA2B,EAAE,CAAC;QACjD,GAAG,CAAC,qEAAqE,CAAC,CAAC;QAC3E,GAAG,CAAC,IAAA,8BAAiB,EAAC,OAAO,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,GAAG,CAAC,oDAAoD,CAAC,CAAC;QAC1D,OAAO,CAAC,CAAC;IACX,CAAC;IACD,GAAG,CAAC,aAAa,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACjC,OAAO,CAAC,CAAC;AACX,CAAC;AAUD,SAAgB,uBAAuB,CAAC,IAA0B;IAChE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxD,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IAC3B,MAAM,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChG,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IAE1B,MAAM,KAAK,GAAwC;QACjD,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,EAAE,CAAC,OAAO;QACnB,KAAK,EAAE,EAAE,CAAC,KAAK;QACf,GAAG,EAAE,KAAK;KACX,CAAC;IACF,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;QAAG,KAA8B,CAAC,MAAM,GAAG,IAAI,CAAC;IACxE,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAG,KAA8B,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAEvF,MAAM,MAAM,GAAG,IAAA,gCAAa,EAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACjD,IAAI,CAAC,IAAA,kBAAI,EAAC,MAAM,CAAC,EAAE,CAAC;QAClB,GAAG,CAAC,8BAA8B,CAAC,CAAC;QACpC,GAAG,CAAC,IAAA,8BAAiB,EAAC,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;IAC7B,IAAI,OAAO,CAAC,IAAI,KAAK,2BAA2B,EAAE,CAAC;QACjD,GAAG,CAAC,mEAAmE,CAAC,CAAC;QACzE,GAAG,CAAC,IAAA,8BAAiB,EAAC,OAAO,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,GAAG,CAAC,uBAAuB,OAAO,CAAC,IAAI,6BAA6B,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,uBAAuB,OAAO,CAAC,IAAI,iCAAiC,CAAC,CAAC;YAC1E,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ;gBAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAClD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,GAAG,CACD,UAAU,OAAO,CAAC,IAAI,mBAAmB,OAAO,CAAC,IAAI,EAAE,YAAY,uBAAuB,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,CACnH,CAAC;IACF,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"disposition.d.ts","sourceRoot":"","sources":["../../../src/shell/gates/disposition.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE1E,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AACjD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,sDAAsD;IACtD,QAAQ,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,CAAC;CAChD;AAED,MAAM,WAAW,iBAAiB;IAChC,gDAAgD;IAChD,QAAQ,CAAC,YAAY,EAAE,SAAS,eAAe,EAAE,CAAC;IAClD,4EAA4E;IAC5E,QAAQ,CAAC,mBAAmB,EAAE,SAAS,cAAc,EAAE,CAAC;IACxD,uCAAuC;IACvC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAmBD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,GACb,iBAAiB,CAgDnB"}
1
+ {"version":3,"file":"disposition.d.ts","sourceRoot":"","sources":["../../../src/shell/gates/disposition.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE1E,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AACjD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,sDAAsD;IACtD,QAAQ,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,CAAC;CAChD;AAED,MAAM,WAAW,iBAAiB;IAChC,gDAAgD;IAChD,QAAQ,CAAC,YAAY,EAAE,SAAS,eAAe,EAAE,CAAC;IAClD,4EAA4E;IAC5E,QAAQ,CAAC,mBAAmB,EAAE,SAAS,cAAc,EAAE,CAAC;IACxD,uCAAuC;IACvC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAkDD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,GACb,iBAAiB,CAiDnB"}
@@ -28,6 +28,35 @@ const KNOWN_GATE_IDS = [
28
28
  'god_object',
29
29
  'todo_detection',
30
30
  ];
31
+ /**
32
+ * Mechanical aliases from subprocess gate names to canonical policy
33
+ * gate IDs. Each alias must be a clear naming-only translation, never a
34
+ * semantic repurposing. Adding a new alias here requires evidence that
35
+ * the subprocess gate and the policy gate measure the same thing under
36
+ * different names.
37
+ *
38
+ * Current aliases:
39
+ * - `god_objects` (subprocess plural) → `god_object` (policy singular).
40
+ * Same intent: detect files exceeding size threshold.
41
+ * - `hidden-todo` (subprocess internal name) → `todo_detection` (policy
42
+ * canonical). Same intent: detect hidden incomplete implementations.
43
+ * NOTE: the subprocess `runHiddenTodoQualityGate` currently throws on
44
+ * errors instead of emitting violations, so this alias is only useful
45
+ * once that producer path is fixed (LEGACY-TEST-RECONCILE-001 follow-up).
46
+ *
47
+ * Refused aliases (semantically distinct, not naming variants):
48
+ * - `code_freeze` → `budget_limit` (crisis-response vs risk-tier budget)
49
+ * - `naming` → `spec_completeness` (identifier conventions vs spec health)
50
+ * - `duplication`, `documentation`, `placeholders`, `simplification`:
51
+ * no policy correspondent; remain in `unmatchedViolations`.
52
+ */
53
+ const SUBPROCESS_GATE_TO_POLICY_GATE = {
54
+ god_objects: 'god_object',
55
+ 'hidden-todo': 'todo_detection',
56
+ };
57
+ function canonicalGateName(subprocessGate) {
58
+ return SUBPROCESS_GATE_TO_POLICY_GATE[subprocessGate] ?? subprocessGate;
59
+ }
31
60
  function gateConfigFor(policy, gateId) {
32
61
  const cfg = policy.gates[gateId];
33
62
  if (cfg === undefined)
@@ -35,12 +64,13 @@ function gateConfigFor(policy, gateId) {
35
64
  return { enabled: cfg.enabled, mode: cfg.mode };
36
65
  }
37
66
  function deriveDispositions(report, policy) {
38
- // Group violations by gate name.
67
+ // Group violations by canonical gate name (applying mechanical aliases).
39
68
  const byGate = new Map();
40
69
  for (const v of report.violations) {
41
- const list = byGate.get(v.gate);
70
+ const canonical = canonicalGateName(v.gate);
71
+ const list = byGate.get(canonical);
42
72
  if (list === undefined)
43
- byGate.set(v.gate, [v]);
73
+ byGate.set(canonical, [v]);
44
74
  else
45
75
  list.push(v);
46
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"disposition.js","sourceRoot":"","sources":["../../../src/shell/gates/disposition.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"disposition.js","sourceRoot":"","sources":["../../../src/shell/gates/disposition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { Spec } from '@paths.design/caws-kernel';
2
+ import type { Policy } from '@paths.design/caws-kernel';
3
+ import type { GatesViolation } from '../gate-result-contract';
4
+ import { type StagedFileChange } from './diff-helpers';
5
+ export interface BudgetLimitInput {
6
+ readonly spec: Spec;
7
+ readonly policy: Policy;
8
+ readonly repoRoot: string;
9
+ /** Override the staged-diff source (tests). */
10
+ readonly stagedChanges?: readonly StagedFileChange[];
11
+ }
12
+ export interface BudgetLimitResult {
13
+ readonly violations: readonly GatesViolation[];
14
+ /** Observed budget consumption, regardless of whether a violation fired.
15
+ * Useful for telemetry/diagnostics; not used for blocking. */
16
+ readonly observed: {
17
+ readonly files_changed: number;
18
+ readonly loc_changed: number;
19
+ readonly max_files: number;
20
+ readonly max_loc: number;
21
+ };
22
+ }
23
+ export declare function evaluateBudgetLimit(input: BudgetLimitInput): BudgetLimitResult;
24
+ //# sourceMappingURL=budget-limit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget-limit.d.ts","sourceRoot":"","sources":["../../../../src/shell/gates/local-evaluators/budget-limit.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAsC,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE3F,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,+CAA+C;IAC/C,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACtD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,CAAC;IAC/C;mEAC+D;IAC/D,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AASD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CA2C9E"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ // budget_limit evaluator.
3
+ //
4
+ // Compares staged diff size to the policy's per-risk-tier budget.
5
+ //
6
+ // Rules:
7
+ // - Risk tier comes from the active spec (1, 2, or 3).
8
+ // - Budget comes from policy.risk_tiers[tier] (max_files, max_loc).
9
+ // - A violation fires when files_changed > max_files or
10
+ // loc_changed > max_loc. Each threshold breach is one violation.
11
+ //
12
+ // This evaluator is local (caws-cli concern). The quality-gates
13
+ // subprocess does not emit `budget_limit` violations; v11 deliberately
14
+ // keeps risk-tier budget enforcement in the CLI where the active spec
15
+ // and staged diff are authoritative.
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.evaluateBudgetLimit = evaluateBudgetLimit;
18
+ const diff_helpers_1 = require("./diff-helpers");
19
+ function tierKey(tier) {
20
+ if (tier === 1)
21
+ return '1';
22
+ if (tier === 2)
23
+ return '2';
24
+ if (tier === 3)
25
+ return '3';
26
+ return undefined;
27
+ }
28
+ function evaluateBudgetLimit(input) {
29
+ const changes = input.stagedChanges ?? (0, diff_helpers_1.listStagedChanges)(input.repoRoot);
30
+ const files_changed = changes.length;
31
+ const loc_changed = (0, diff_helpers_1.totalInsertions)(changes);
32
+ const tk = tierKey(input.spec.risk_tier);
33
+ if (tk === undefined) {
34
+ // Spec carries a risk_tier the schema accepts (1, 2, 3); anything
35
+ // else is a spec-completeness problem, not a budget violation.
36
+ return {
37
+ violations: [],
38
+ observed: { files_changed, loc_changed, max_files: 0, max_loc: 0 },
39
+ };
40
+ }
41
+ const budget = input.policy.risk_tiers[tk];
42
+ const { max_files, max_loc } = budget;
43
+ const violations = [];
44
+ if (files_changed > max_files) {
45
+ violations.push({
46
+ gate: 'budget_limit',
47
+ type: 'max_files_exceeded',
48
+ message: `Staged change touches ${files_changed} file(s); risk-tier ${input.spec.risk_tier} ` +
49
+ `budget allows up to ${max_files}.`,
50
+ severity: 'fail',
51
+ });
52
+ }
53
+ if (loc_changed > max_loc) {
54
+ violations.push({
55
+ gate: 'budget_limit',
56
+ type: 'max_loc_exceeded',
57
+ message: `Staged change adds ${loc_changed} line(s); risk-tier ${input.spec.risk_tier} ` +
58
+ `budget allows up to ${max_loc}.`,
59
+ severity: 'fail',
60
+ });
61
+ }
62
+ return {
63
+ violations,
64
+ observed: { files_changed, loc_changed, max_files, max_loc },
65
+ };
66
+ }
67
+ //# sourceMappingURL=budget-limit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget-limit.js","sourceRoot":"","sources":["../../../../src/shell/gates/local-evaluators/budget-limit.ts"],"names":[],"mappings":";AAAA,0BAA0B;AAC1B,EAAE;AACF,kEAAkE;AAClE,EAAE;AACF,SAAS;AACT,yDAAyD;AACzD,sEAAsE;AACtE,0DAA0D;AAC1D,qEAAqE;AACrE,EAAE;AACF,gEAAgE;AAChE,uEAAuE;AACvE,sEAAsE;AACtE,qCAAqC;;AAmCrC,kDA2CC;AAxED,iDAA2F;AAsB3F,SAAS,OAAO,CAAC,IAAY;IAC3B,IAAI,IAAI,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAC3B,IAAI,IAAI,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAC3B,IAAI,IAAI,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAC3B,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,mBAAmB,CAAC,KAAuB;IACzD,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,IAAI,IAAA,gCAAiB,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzE,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IACrC,MAAM,WAAW,GAAG,IAAA,8BAAe,EAAC,OAAO,CAAC,CAAC;IAE7C,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;QACrB,kEAAkE;QAClE,+DAA+D;QAC/D,OAAO;YACL,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;SACnE,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAEtC,MAAM,UAAU,GAAqB,EAAE,CAAC;IACxC,IAAI,aAAa,GAAG,SAAS,EAAE,CAAC;QAC9B,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EACL,yBAAyB,aAAa,uBAAuB,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG;gBACpF,uBAAuB,SAAS,GAAG;YACrC,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,WAAW,GAAG,OAAO,EAAE,CAAC;QAC1B,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,kBAAkB;YACxB,OAAO,EACL,sBAAsB,WAAW,uBAAuB,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG;gBAC/E,uBAAuB,OAAO,GAAG;YACnC,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,UAAU;QACV,QAAQ,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE;KAC7D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,25 @@
1
+ export interface StagedFileChange {
2
+ /** Repo-relative POSIX path of the changed file. */
3
+ readonly path: string;
4
+ /** Lines added in the staged diff. `null` for binary files. */
5
+ readonly insertions: number | null;
6
+ /** Lines deleted in the staged diff. `null` for binary files. */
7
+ readonly deletions: number | null;
8
+ }
9
+ /**
10
+ * List staged files with line-count deltas. Returns an empty array on
11
+ * any git error (no commits yet, not a repo, etc.) — the caller decides
12
+ * what an empty-diff means for their gate.
13
+ *
14
+ * `--cached` is used so the contract matches `--context=commit`. The
15
+ * caller may swap to `--diff-filter` or other working-tree shapes if a
16
+ * different context is needed; v11.1 only ships the commit context.
17
+ */
18
+ export declare function listStagedChanges(repoRoot: string): readonly StagedFileChange[];
19
+ /**
20
+ * Total inserted lines across staged changes. Binary files (`null`
21
+ * insertions) contribute 0 to the LOC count — they are governed by
22
+ * file count instead.
23
+ */
24
+ export declare function totalInsertions(changes: readonly StagedFileChange[]): number;
25
+ //# sourceMappingURL=diff-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-helpers.d.ts","sourceRoot":"","sources":["../../../../src/shell/gates/local-evaluators/diff-helpers.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAUD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,gBAAgB,EAAE,CA2B/E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,GAAG,MAAM,CAM5E"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ // Staged-diff helpers for local gate evaluators.
3
+ //
4
+ // These helpers shell out to git to enumerate staged file changes and
5
+ // their insertion counts. They are the only place local evaluators
6
+ // touch git; the evaluators themselves remain pure (path lists + numbers
7
+ // in, violations out).
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.listStagedChanges = listStagedChanges;
10
+ exports.totalInsertions = totalInsertions;
11
+ const node_child_process_1 = require("node:child_process");
12
+ function runGit(args, cwd) {
13
+ return (0, node_child_process_1.execFileSync)('git', [...args], {
14
+ cwd,
15
+ encoding: 'utf8',
16
+ stdio: ['ignore', 'pipe', 'pipe'],
17
+ }).toString();
18
+ }
19
+ /**
20
+ * List staged files with line-count deltas. Returns an empty array on
21
+ * any git error (no commits yet, not a repo, etc.) — the caller decides
22
+ * what an empty-diff means for their gate.
23
+ *
24
+ * `--cached` is used so the contract matches `--context=commit`. The
25
+ * caller may swap to `--diff-filter` or other working-tree shapes if a
26
+ * different context is needed; v11.1 only ships the commit context.
27
+ */
28
+ function listStagedChanges(repoRoot) {
29
+ let raw;
30
+ try {
31
+ raw = runGit(['diff', '--cached', '--numstat', '-z'], repoRoot);
32
+ }
33
+ catch {
34
+ return [];
35
+ }
36
+ // --numstat -z output: `\d+\t\d+\t<path>\0` per record. Binary files
37
+ // show `-\t-\t<path>\0`.
38
+ const records = [];
39
+ for (const rec of raw.split('\0')) {
40
+ if (rec.length === 0)
41
+ continue;
42
+ const tab1 = rec.indexOf('\t');
43
+ if (tab1 === -1)
44
+ continue;
45
+ const tab2 = rec.indexOf('\t', tab1 + 1);
46
+ if (tab2 === -1)
47
+ continue;
48
+ const addsRaw = rec.slice(0, tab1);
49
+ const delsRaw = rec.slice(tab1 + 1, tab2);
50
+ const path = rec.slice(tab2 + 1);
51
+ if (path.length === 0)
52
+ continue;
53
+ records.push({
54
+ path,
55
+ insertions: addsRaw === '-' ? null : Number.parseInt(addsRaw, 10),
56
+ deletions: delsRaw === '-' ? null : Number.parseInt(delsRaw, 10),
57
+ });
58
+ }
59
+ return records;
60
+ }
61
+ /**
62
+ * Total inserted lines across staged changes. Binary files (`null`
63
+ * insertions) contribute 0 to the LOC count — they are governed by
64
+ * file count instead.
65
+ */
66
+ function totalInsertions(changes) {
67
+ let n = 0;
68
+ for (const c of changes) {
69
+ if (typeof c.insertions === 'number')
70
+ n += c.insertions;
71
+ }
72
+ return n;
73
+ }
74
+ //# sourceMappingURL=diff-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-helpers.js","sourceRoot":"","sources":["../../../../src/shell/gates/local-evaluators/diff-helpers.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,mEAAmE;AACnE,yEAAyE;AACzE,uBAAuB;;AA8BvB,8CA2BC;AAOD,0CAMC;AApED,2DAAkD;AAWlD,SAAS,MAAM,CAAC,IAAuB,EAAE,GAAW;IAClD,OAAO,IAAA,iCAAY,EAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE;QACpC,GAAG;QACH,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;KAClC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,iBAAiB,CAAC,QAAgB;IAChD,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,qEAAqE;IACrE,yBAAyB;IACzB,MAAM,OAAO,GAAuB,EAAE,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,IAAI,KAAK,CAAC,CAAC;YAAE,SAAS;QAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;QACzC,IAAI,IAAI,KAAK,CAAC,CAAC;YAAE,SAAS;QAC1B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAChC,OAAO,CAAC,IAAI,CAAC;YACX,IAAI;YACJ,UAAU,EAAE,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YACjE,SAAS,EAAE,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;SACjE,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,OAAoC;IAClE,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ;YAAE,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;IAC1D,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { Spec, Policy } from '@paths.design/caws-kernel';
2
+ import type { GatesViolation } from '../gate-result-contract';
3
+ import type { StagedFileChange } from './diff-helpers';
4
+ export type { StagedFileChange } from './diff-helpers';
5
+ export { evaluateBudgetLimit } from './budget-limit';
6
+ export { evaluateScopeBoundary } from './scope-boundary';
7
+ export { evaluateSpecCompleteness } from './spec-completeness';
8
+ export interface LocalEvaluatorsInput {
9
+ readonly spec: Spec;
10
+ readonly policy: Policy;
11
+ readonly repoRoot: string;
12
+ readonly nowIso: string;
13
+ /** Worktree name for scope diagnostics (optional). */
14
+ readonly worktreeName?: string;
15
+ /** Override staged-diff source (tests). When provided, all evaluators
16
+ * use this list instead of shelling out to git. */
17
+ readonly stagedChanges?: readonly StagedFileChange[];
18
+ }
19
+ export interface LocalEvaluatorsResult {
20
+ readonly violations: readonly GatesViolation[];
21
+ }
22
+ /**
23
+ * Run all CAWS-local policy evaluators against the given spec+policy.
24
+ * Returns a flat list of violations tagged with canonical policy gate
25
+ * names (`budget_limit`, `scope_boundary`, `spec_completeness`).
26
+ */
27
+ export declare function runLocalEvaluators(input: LocalEvaluatorsInput): LocalEvaluatorsResult;
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shell/gates/local-evaluators/index.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAI9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B;wDACoD;IACpD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACtD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,CAAC;CAChD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CA2BrF"}