@j0hanz/thinkseq-mcp 1.0.5 → 1.1.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 (96) hide show
  1. package/README.md +161 -71
  2. package/dist/app.d.ts +2 -36
  3. package/dist/app.d.ts.map +1 -1
  4. package/dist/app.js +13 -99
  5. package/dist/app.js.map +1 -1
  6. package/dist/appConfig/runDependencies.d.ts +36 -0
  7. package/dist/appConfig/runDependencies.d.ts.map +1 -0
  8. package/dist/appConfig/runDependencies.js +65 -0
  9. package/dist/appConfig/runDependencies.js.map +1 -0
  10. package/dist/appConfig/shutdown.d.ts +19 -0
  11. package/dist/appConfig/shutdown.d.ts.map +1 -0
  12. package/dist/appConfig/shutdown.js +65 -0
  13. package/dist/appConfig/shutdown.js.map +1 -0
  14. package/dist/appConfig/types.d.ts +10 -0
  15. package/dist/appConfig/types.d.ts.map +1 -0
  16. package/dist/appConfig/types.js +2 -0
  17. package/dist/appConfig/types.js.map +1 -0
  18. package/dist/appConfig.d.ts +5 -0
  19. package/dist/appConfig.d.ts.map +1 -0
  20. package/dist/appConfig.js +3 -0
  21. package/dist/appConfig.js.map +1 -0
  22. package/dist/engine/pruning.d.ts +3 -0
  23. package/dist/engine/pruning.d.ts.map +1 -0
  24. package/dist/engine/pruning.js +11 -0
  25. package/dist/engine/pruning.js.map +1 -0
  26. package/dist/engine/revision.d.ts +9 -0
  27. package/dist/engine/revision.d.ts.map +1 -0
  28. package/dist/engine/revision.js +38 -0
  29. package/dist/engine/revision.js.map +1 -0
  30. package/dist/engine/thoughtQueries.d.ts +3 -0
  31. package/dist/engine/thoughtQueries.d.ts.map +1 -0
  32. package/dist/engine/thoughtQueries.js +18 -0
  33. package/dist/engine/thoughtQueries.js.map +1 -0
  34. package/dist/engine/thoughtStore.d.ts +22 -0
  35. package/dist/engine/thoughtStore.d.ts.map +1 -0
  36. package/dist/engine/thoughtStore.js +151 -0
  37. package/dist/engine/thoughtStore.js.map +1 -0
  38. package/dist/engine.d.ts.map +1 -1
  39. package/dist/engine.js +64 -158
  40. package/dist/engine.js.map +1 -1
  41. package/dist/engineConfig.d.ts +11 -0
  42. package/dist/engineConfig.d.ts.map +1 -0
  43. package/dist/engineConfig.js +12 -0
  44. package/dist/engineConfig.js.map +1 -0
  45. package/dist/index.js +35 -2
  46. package/dist/index.js.map +1 -1
  47. package/dist/lib/cli.d.ts +14 -0
  48. package/dist/lib/cli.d.ts.map +1 -0
  49. package/dist/lib/cli.js +71 -0
  50. package/dist/lib/cli.js.map +1 -0
  51. package/dist/lib/context.d.ts +7 -0
  52. package/dist/lib/context.d.ts.map +1 -0
  53. package/dist/lib/context.js +15 -0
  54. package/dist/lib/context.js.map +1 -0
  55. package/dist/lib/diagnostics.d.ts +9 -8
  56. package/dist/lib/diagnostics.d.ts.map +1 -1
  57. package/dist/lib/diagnostics.js +18 -8
  58. package/dist/lib/diagnostics.js.map +1 -1
  59. package/dist/lib/engineWorkerHandler.d.ts +12 -0
  60. package/dist/lib/engineWorkerHandler.d.ts.map +1 -0
  61. package/dist/lib/engineWorkerHandler.js +44 -0
  62. package/dist/lib/engineWorkerHandler.js.map +1 -0
  63. package/dist/lib/protocolGuards.d.ts.map +1 -1
  64. package/dist/lib/protocolGuards.js +8 -5
  65. package/dist/lib/protocolGuards.js.map +1 -1
  66. package/dist/lib/stdioGuards.d.ts.map +1 -1
  67. package/dist/lib/stdioGuards.js +23 -12
  68. package/dist/lib/stdioGuards.js.map +1 -1
  69. package/dist/lib/types.d.ts +13 -12
  70. package/dist/lib/types.d.ts.map +1 -1
  71. package/dist/lib/workerEngineClient.d.ts +23 -0
  72. package/dist/lib/workerEngineClient.d.ts.map +1 -0
  73. package/dist/lib/workerEngineClient.js +144 -0
  74. package/dist/lib/workerEngineClient.js.map +1 -0
  75. package/dist/lib/workerProtocol.d.ts +21 -0
  76. package/dist/lib/workerProtocol.d.ts.map +1 -0
  77. package/dist/lib/workerProtocol.js +22 -0
  78. package/dist/lib/workerProtocol.js.map +1 -0
  79. package/dist/schemas/inputs.d.ts +1 -13
  80. package/dist/schemas/inputs.d.ts.map +1 -1
  81. package/dist/schemas/inputs.js +5 -29
  82. package/dist/schemas/inputs.js.map +1 -1
  83. package/dist/schemas/outputs.d.ts +13 -16
  84. package/dist/schemas/outputs.d.ts.map +1 -1
  85. package/dist/schemas/outputs.js +46 -59
  86. package/dist/schemas/outputs.js.map +1 -1
  87. package/dist/tools/thinkseq.d.ts +7 -2
  88. package/dist/tools/thinkseq.d.ts.map +1 -1
  89. package/dist/tools/thinkseq.js +71 -59
  90. package/dist/tools/thinkseq.js.map +1 -1
  91. package/dist/tsconfig.tsbuildinfo +1 -1
  92. package/dist/workers/engineWorker.d.ts +2 -0
  93. package/dist/workers/engineWorker.d.ts.map +1 -0
  94. package/dist/workers/engineWorker.js +15 -0
  95. package/dist/workers/engineWorker.js.map +1 -0
  96. package/package.json +8 -6
package/dist/engine.js CHANGED
@@ -1,177 +1,83 @@
1
- import { publishEngineEvent } from './lib/diagnostics.js';
2
- const DEFAULT_MAX_THOUGHTS = 500;
3
- const MAX_THOUGHTS_CAP = 10000;
4
- const MAX_MEMORY_BYTES = 100 * 1024 * 1024;
5
- const ESTIMATED_THOUGHT_OVERHEAD_BYTES = 200;
6
- function normalizeInt(value, fallback, options) {
7
- if (typeof value !== 'number' || !Number.isFinite(value))
8
- return fallback;
9
- return Math.max(options.min, Math.min(options.max, Math.trunc(value)));
10
- }
1
+ import { resolveRevisionTarget } from './engine/revision.js';
2
+ import { buildContextSummary } from './engine/thoughtQueries.js';
3
+ import { ThoughtStore } from './engine/thoughtStore.js';
4
+ import { DEFAULT_MAX_THOUGHTS, ESTIMATED_THOUGHT_OVERHEAD_BYTES, MAX_MEMORY_BYTES, MAX_THOUGHTS_CAP, normalizeInt, } from './engineConfig.js';
11
5
  export class ThinkingEngine {
12
- #thoughts = [];
13
- #branches = new Map();
14
- #branchIdsCache = [];
15
- #branchIdsDirty = true;
16
- #estimatedBytes = 0;
17
- #revisionCount = 0;
18
- #maxThoughts;
19
- #maxMemoryBytes;
20
- #estimatedThoughtOverheadBytes;
6
+ #store;
7
+ #hasRevisions = false;
21
8
  constructor(options = {}) {
22
- this.#maxThoughts = normalizeInt(options.maxThoughts, DEFAULT_MAX_THOUGHTS, { min: 1, max: MAX_THOUGHTS_CAP });
23
- this.#maxMemoryBytes = normalizeInt(options.maxMemoryBytes, MAX_MEMORY_BYTES, { min: 1, max: Number.MAX_SAFE_INTEGER });
24
- this.#estimatedThoughtOverheadBytes = normalizeInt(options.estimatedThoughtOverheadBytes, ESTIMATED_THOUGHT_OVERHEAD_BYTES, { min: 1, max: Number.MAX_SAFE_INTEGER });
9
+ const maxThoughts = normalizeInt(options.maxThoughts, DEFAULT_MAX_THOUGHTS, { min: 1, max: MAX_THOUGHTS_CAP });
10
+ const maxMemoryBytes = normalizeInt(options.maxMemoryBytes, MAX_MEMORY_BYTES, { min: 1, max: Number.MAX_SAFE_INTEGER });
11
+ const estimatedThoughtOverheadBytes = normalizeInt(options.estimatedThoughtOverheadBytes, ESTIMATED_THOUGHT_OVERHEAD_BYTES, { min: 1, max: Number.MAX_SAFE_INTEGER });
12
+ this.#store = new ThoughtStore({
13
+ maxThoughts,
14
+ maxMemoryBytes,
15
+ estimatedThoughtOverheadBytes,
16
+ });
25
17
  }
26
18
  processThought(input) {
27
- this.#validateThoughtNumber(input);
28
- this.#validateReferences(input);
29
- const totalThoughts = Math.max(input.totalThoughts, input.thoughtNumber);
30
- const stored = {
19
+ if (input.revisesThought !== undefined) {
20
+ return this.#processRevision(input);
21
+ }
22
+ return this.#processNewThought(input);
23
+ }
24
+ #processNewThought(input) {
25
+ const numbers = this.#store.nextThoughtNumbers(input.totalThoughts);
26
+ const stored = this.#buildStoredThought(input, numbers);
27
+ this.#store.storeThought(stored);
28
+ this.#store.pruneHistoryIfNeeded();
29
+ return this.#buildProcessResult(stored);
30
+ }
31
+ #processRevision(input) {
32
+ const resolved = resolveRevisionTarget(input, (thoughtNumber) => this.#store.getThoughtByNumber(thoughtNumber));
33
+ if (!resolved.ok)
34
+ return resolved.error;
35
+ const { targetNumber } = resolved;
36
+ const numbers = this.#store.nextThoughtNumbers(input.totalThoughts);
37
+ const supersedes = this.#store.supersedeFrom(targetNumber, numbers.thoughtNumber);
38
+ const stored = this.#buildStoredThought(input, {
39
+ ...numbers,
40
+ revisionOf: targetNumber,
41
+ });
42
+ this.#store.storeThought(stored);
43
+ this.#hasRevisions = true;
44
+ this.#store.pruneHistoryIfNeeded();
45
+ return this.#buildProcessResult(stored, {
46
+ revises: targetNumber,
47
+ supersedes,
48
+ });
49
+ }
50
+ #buildStoredThought(input, details) {
51
+ return {
31
52
  ...input,
32
- totalThoughts,
53
+ thoughtNumber: details.thoughtNumber,
54
+ totalThoughts: details.totalThoughts,
33
55
  timestamp: Date.now(),
56
+ isActive: true,
57
+ ...(details.revisionOf !== undefined && {
58
+ revisionOf: details.revisionOf,
59
+ }),
34
60
  };
35
- this.#thoughts.push(stored);
36
- this.#estimatedBytes += this.#estimateThoughtBytes(stored);
37
- if (stored.isRevision)
38
- this.#revisionCount += 1;
39
- if (stored.branchId) {
40
- const branch = this.#branches.get(stored.branchId);
41
- if (branch)
42
- branch.push(stored);
43
- else {
44
- this.#branches.set(stored.branchId, [stored]);
45
- this.#branchIdsDirty = true;
46
- }
47
- }
48
- this.#pruneHistoryIfNeeded();
49
- const context = this.#buildContextSummary();
61
+ }
62
+ #buildProcessResult(stored, revisionInfo) {
63
+ const activeThoughts = this.#store.getActiveThoughts();
64
+ const context = buildContextSummary(activeThoughts, revisionInfo);
65
+ const isComplete = stored.thoughtNumber >= stored.totalThoughts;
66
+ const revisableThoughts = this.#store.getActiveThoughtNumbers().slice();
50
67
  return {
51
68
  ok: true,
52
69
  result: {
53
70
  thoughtNumber: stored.thoughtNumber,
54
71
  totalThoughts: stored.totalThoughts,
55
72
  progress: Math.min(1, stored.thoughtNumber / stored.totalThoughts),
56
- nextThoughtNeeded: input.nextThoughtNeeded,
57
- thoughtHistoryLength: this.#thoughts.length,
58
- branches: this.#getBranchIds(),
73
+ isComplete,
74
+ thoughtHistoryLength: this.#store.getTotalLength(),
75
+ hasRevisions: this.#hasRevisions,
76
+ activePathLength: activeThoughts.length,
77
+ revisableThoughts,
59
78
  context,
60
79
  },
61
80
  };
62
81
  }
63
- #getBranchIds() {
64
- if (this.#branchIdsDirty) {
65
- this.#branchIdsCache = Array.from(this.#branches.keys());
66
- this.#branchIdsDirty = false;
67
- }
68
- return this.#branchIdsCache;
69
- }
70
- #buildContextSummary() {
71
- const recent = this.#thoughts.slice(-5);
72
- const currentBranch = this.#thoughts.at(-1)?.branchId;
73
- return {
74
- recentThoughts: recent.map((t) => {
75
- const base = {
76
- number: t.thoughtNumber,
77
- preview: t.thought.slice(0, 100) + (t.thought.length > 100 ? '...' : ''),
78
- };
79
- return t.thoughtType ? { ...base, type: t.thoughtType } : base;
80
- }),
81
- ...(currentBranch !== undefined ? { currentBranch } : {}),
82
- hasRevisions: this.#revisionCount > 0,
83
- };
84
- }
85
- #validateThoughtNumber(input) {
86
- const lastThought = this.#thoughts.at(-1);
87
- if (!lastThought) {
88
- this.#ensureFirstThought(input.thoughtNumber);
89
- return;
90
- }
91
- if (this.#isRevisionOrBranch(input))
92
- return;
93
- this.#warnOnSequenceGap(lastThought, input.thoughtNumber);
94
- }
95
- #ensureFirstThought(thoughtNumber) {
96
- if (thoughtNumber === 1)
97
- return;
98
- throw new Error(`First thought must be number 1, got ${String(thoughtNumber)}`);
99
- }
100
- #isRevisionOrBranch(input) {
101
- return input.isRevision === true || input.branchFromThought !== undefined;
102
- }
103
- #warnOnSequenceGap(lastThought, thoughtNumber) {
104
- if (thoughtNumber === lastThought.thoughtNumber + 1)
105
- return;
106
- publishEngineEvent({
107
- type: 'engine.sequence_gap',
108
- ts: Date.now(),
109
- expected: lastThought.thoughtNumber + 1,
110
- received: thoughtNumber,
111
- });
112
- }
113
- #validateReferences(input) {
114
- const maxThoughtNumber = this.#thoughts.at(-1)?.thoughtNumber ?? 0;
115
- this.#assertValidReference('revisesThought', input.revisesThought, maxThoughtNumber);
116
- this.#assertValidReference('branchFromThought', input.branchFromThought, maxThoughtNumber);
117
- }
118
- #assertValidReference(field, value, max) {
119
- if (value === undefined || value <= max)
120
- return;
121
- throw new Error(`${field} ${String(value)} references non-existent thought (max: ${String(max)})`);
122
- }
123
- #pruneHistoryIfNeeded() {
124
- const excess = this.#thoughts.length - this.#maxThoughts;
125
- if (excess > 0) {
126
- const batch = Math.max(excess, Math.ceil(this.#maxThoughts * 0.1));
127
- this.#removeOldest(batch);
128
- }
129
- if (this.#estimatedBytes > this.#maxMemoryBytes &&
130
- this.#thoughts.length > 10) {
131
- const toRemove = Math.ceil(this.#thoughts.length * 0.2);
132
- this.#removeOldest(toRemove);
133
- }
134
- }
135
- #estimateThoughtBytes(thought) {
136
- return thought.thought.length * 2 + this.#estimatedThoughtOverheadBytes;
137
- }
138
- #removeOldest(count) {
139
- if (count <= 0 || this.#thoughts.length === 0)
140
- return;
141
- const actual = Math.min(count, this.#thoughts.length);
142
- const removed = this.#thoughts.splice(0, actual);
143
- if (removed.length === 0)
144
- return;
145
- this.#applyRemoval(removed);
146
- }
147
- #applyRemoval(removed) {
148
- const branchRemovals = this.#collectBranchRemovals(removed);
149
- for (const [branchId, removeCount] of branchRemovals) {
150
- this.#trimBranch(branchId, removeCount);
151
- }
152
- }
153
- #collectBranchRemovals(removed) {
154
- const branchRemovals = new Map();
155
- for (const thought of removed) {
156
- this.#estimatedBytes -= this.#estimateThoughtBytes(thought);
157
- if (thought.isRevision)
158
- this.#revisionCount -= 1;
159
- if (!thought.branchId)
160
- continue;
161
- branchRemovals.set(thought.branchId, (branchRemovals.get(thought.branchId) ?? 0) + 1);
162
- }
163
- return branchRemovals;
164
- }
165
- #trimBranch(branchId, removeCount) {
166
- const branch = this.#branches.get(branchId);
167
- if (!branch)
168
- return;
169
- if (removeCount >= branch.length) {
170
- this.#branches.delete(branchId);
171
- this.#branchIdsDirty = true;
172
- return;
173
- }
174
- branch.splice(0, removeCount);
175
- }
176
82
  }
177
83
  //# sourceMappingURL=engine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare const DEFAULT_MAX_THOUGHTS = 500;
2
+ export declare const MAX_THOUGHTS_CAP = 10000;
3
+ export declare const MAX_MEMORY_BYTES: number;
4
+ export declare const ESTIMATED_THOUGHT_OVERHEAD_BYTES = 200;
5
+ export declare const COMPACT_THRESHOLD = 1024;
6
+ export declare const COMPACT_RATIO = 0.5;
7
+ export declare function normalizeInt(value: number | undefined, fallback: number, options: {
8
+ min: number;
9
+ max: number;
10
+ }): number;
11
+ //# sourceMappingURL=engineConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engineConfig.d.ts","sourceRoot":"","sources":["../src/engineConfig.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AACtC,eAAO,MAAM,gBAAgB,QAAoB,CAAC;AAClD,eAAO,MAAM,gCAAgC,MAAM,CAAC;AACpD,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACpC,MAAM,CAGR"}
@@ -0,0 +1,12 @@
1
+ export const DEFAULT_MAX_THOUGHTS = 500;
2
+ export const MAX_THOUGHTS_CAP = 10000;
3
+ export const MAX_MEMORY_BYTES = 100 * 1024 * 1024;
4
+ export const ESTIMATED_THOUGHT_OVERHEAD_BYTES = 200;
5
+ export const COMPACT_THRESHOLD = 1024;
6
+ export const COMPACT_RATIO = 0.5;
7
+ export function normalizeInt(value, fallback, options) {
8
+ if (typeof value !== 'number' || !Number.isFinite(value))
9
+ return fallback;
10
+ return Math.max(options.min, Math.min(options.max, Math.trunc(value)));
11
+ }
12
+ //# sourceMappingURL=engineConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engineConfig.js","sourceRoot":"","sources":["../src/engineConfig.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAClD,MAAM,CAAC,MAAM,gCAAgC,GAAG,GAAG,CAAC;AACpD,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AACtC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAEjC,MAAM,UAAU,YAAY,CAC1B,KAAyB,EACzB,QAAgB,EAChB,OAAqC;IAErC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1E,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC"}
package/dist/index.js CHANGED
@@ -1,9 +1,42 @@
1
1
  #!/usr/bin/env node
2
2
  import { installProcessErrorHandlers, run } from './app.js';
3
+ import { ThinkingEngine } from './engine.js';
4
+ import { getCliHelpText, parseCliConfig } from './lib/cli.js';
3
5
  installProcessErrorHandlers();
4
- run().catch((err) => {
6
+ const fatal = (err) => {
5
7
  const message = err instanceof Error ? err.message : String(err);
6
8
  console.error(`thinkseq: fatal: ${message}`);
7
9
  process.exit(1);
8
- });
10
+ };
11
+ const printHelpAndExit = () => {
12
+ console.log(getCliHelpText());
13
+ process.exit(0);
14
+ };
15
+ const buildEngineOptions = (config) => {
16
+ const options = {};
17
+ if (config.maxThoughts !== undefined)
18
+ options.maxThoughts = config.maxThoughts;
19
+ if (config.maxMemoryBytes !== undefined)
20
+ options.maxMemoryBytes = config.maxMemoryBytes;
21
+ return options;
22
+ };
23
+ const buildRunDependencies = (config) => {
24
+ const engineOptions = buildEngineOptions(config);
25
+ return {
26
+ ...(config.packageReadTimeoutMs !== undefined && {
27
+ packageReadTimeoutMs: config.packageReadTimeoutMs,
28
+ }),
29
+ ...(config.shutdownTimeoutMs !== undefined && {
30
+ shutdownTimeoutMs: config.shutdownTimeoutMs,
31
+ }),
32
+ engineFactory: () => new ThinkingEngine(engineOptions),
33
+ };
34
+ };
35
+ const runCli = async () => {
36
+ const { config, help } = parseCliConfig();
37
+ if (help)
38
+ printHelpAndExit();
39
+ await run(buildRunDependencies(config));
40
+ };
41
+ void runCli().catch(fatal);
9
42
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,2BAA2B,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE5D,2BAA2B,EAAE,CAAC;AAE9B,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC3B,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,2BAA2B,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9D,2BAA2B,EAAE,CAAC;AAI9B,MAAM,KAAK,GAAG,CAAC,GAAY,EAAS,EAAE;IACpC,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,GAAU,EAAE;IACnC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;IAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,MAG3B,EAAyB,EAAE;IAC1B,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS;QAClC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IAC3C,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS;QACrC,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;IACjD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,MAAiB,EAAmB,EAAE;IAClE,MAAM,aAAa,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO;QACL,GAAG,CAAC,MAAM,CAAC,oBAAoB,KAAK,SAAS,IAAI;YAC/C,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;SAClD,CAAC;QACF,GAAG,CAAC,MAAM,CAAC,iBAAiB,KAAK,SAAS,IAAI;YAC5C,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;SAC5C,CAAC;QACF,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,cAAc,CAAC,aAAa,CAAC;KACvD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,KAAK,IAAmB,EAAE;IACvC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,cAAc,EAAE,CAAC;IAC1C,IAAI,IAAI;QAAE,gBAAgB,EAAE,CAAC;IAC7B,MAAM,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,KAAK,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ interface CliConfig {
2
+ maxThoughts?: number;
3
+ maxMemoryBytes?: number;
4
+ shutdownTimeoutMs?: number;
5
+ packageReadTimeoutMs?: number;
6
+ }
7
+ export interface CliParseResult {
8
+ config: CliConfig;
9
+ help: boolean;
10
+ }
11
+ export declare function getCliHelpText(): string;
12
+ export declare function parseCliConfig(args?: readonly string[]): CliParseResult;
13
+ export {};
14
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/lib/cli.ts"],"names":[],"mappings":"AAEA,UAAU,SAAS;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;CACf;AAuFD,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,cAAc,CAMvE"}
@@ -0,0 +1,71 @@
1
+ import { parseArgs } from 'node:util';
2
+ const PARSE_CONFIG = {
3
+ options: {
4
+ 'max-thoughts': { type: 'string' },
5
+ 'max-memory-mb': { type: 'string' },
6
+ 'shutdown-timeout-ms': { type: 'string' },
7
+ 'package-read-timeout-ms': { type: 'string' },
8
+ help: { type: 'boolean', short: 'h' },
9
+ },
10
+ strict: true,
11
+ allowPositionals: false,
12
+ allowNegative: false,
13
+ };
14
+ const HELP_TEXT = `Usage: thinkseq [options]
15
+
16
+ Options:
17
+ --max-thoughts <number> Max thoughts to keep in memory
18
+ --max-memory-mb <number> Max memory (MB) for stored thoughts
19
+ --shutdown-timeout-ms <number> Graceful shutdown timeout
20
+ --package-read-timeout-ms <number> Package.json read timeout
21
+ -h, --help Show this help`;
22
+ const BYTES_PER_MB = 1024 * 1024;
23
+ function parsePositiveInt(value, label) {
24
+ if (value === undefined)
25
+ return undefined;
26
+ const parsed = Number.parseInt(value, 10);
27
+ if (!Number.isFinite(parsed) || parsed <= 0) {
28
+ throw new Error(`Invalid ${label}: ${value}`);
29
+ }
30
+ return parsed;
31
+ }
32
+ function getParsedValues(args) {
33
+ if (args) {
34
+ return parseArgs({ ...PARSE_CONFIG, args }).values;
35
+ }
36
+ return parseArgs(PARSE_CONFIG).values;
37
+ }
38
+ function getStringOption(values, key) {
39
+ const value = values[key];
40
+ return typeof value === 'string' ? value : undefined;
41
+ }
42
+ function buildCliConfig(values) {
43
+ const maxThoughts = parsePositiveInt(getStringOption(values, 'max-thoughts'), 'max-thoughts');
44
+ const maxMemoryMb = parsePositiveInt(getStringOption(values, 'max-memory-mb'), 'max-memory-mb');
45
+ const shutdownTimeoutMs = parsePositiveInt(getStringOption(values, 'shutdown-timeout-ms'), 'shutdown-timeout-ms');
46
+ const packageReadTimeoutMs = parsePositiveInt(getStringOption(values, 'package-read-timeout-ms'), 'package-read-timeout-ms');
47
+ const config = {};
48
+ if (maxThoughts !== undefined)
49
+ config.maxThoughts = maxThoughts;
50
+ if (maxMemoryMb !== undefined) {
51
+ config.maxMemoryBytes = maxMemoryMb * BYTES_PER_MB;
52
+ }
53
+ if (shutdownTimeoutMs !== undefined) {
54
+ config.shutdownTimeoutMs = shutdownTimeoutMs;
55
+ }
56
+ if (packageReadTimeoutMs !== undefined) {
57
+ config.packageReadTimeoutMs = packageReadTimeoutMs;
58
+ }
59
+ return config;
60
+ }
61
+ export function getCliHelpText() {
62
+ return HELP_TEXT;
63
+ }
64
+ export function parseCliConfig(args) {
65
+ const values = getParsedValues(args);
66
+ return {
67
+ help: values.help === true,
68
+ config: buildCliConfig(values),
69
+ };
70
+ }
71
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/lib/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export interface RequestContext {
2
+ requestId: string;
3
+ startedAt: number;
4
+ }
5
+ export declare function runWithContext<T>(callback: () => T, context?: Partial<RequestContext>): T;
6
+ export declare function getRequestContext(): RequestContext | undefined;
7
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/lib/context.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,wBAAgB,cAAc,CAAC,CAAC,EAC9B,QAAQ,EAAE,MAAM,CAAC,EACjB,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAChC,CAAC,CAMH;AAED,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,SAAS,CAE9D"}
@@ -0,0 +1,15 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
2
+ import { randomUUID } from 'node:crypto';
3
+ import { performance } from 'node:perf_hooks';
4
+ const storage = new AsyncLocalStorage();
5
+ export function runWithContext(callback, context) {
6
+ const store = {
7
+ requestId: context?.requestId ?? randomUUID(),
8
+ startedAt: context?.startedAt ?? performance.now(),
9
+ };
10
+ return storage.run(store, callback);
11
+ }
12
+ export function getRequestContext() {
13
+ return storage.getStore();
14
+ }
15
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/lib/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAO9C,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAkB,CAAC;AAExD,MAAM,UAAU,cAAc,CAC5B,QAAiB,EACjB,OAAiC;IAEjC,MAAM,KAAK,GAAmB;QAC5B,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,UAAU,EAAE;QAC7C,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,GAAG,EAAE;KACnD,CAAC;IACF,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC5B,CAAC"}
@@ -1,4 +1,8 @@
1
- export type ToolEvent = {
1
+ interface EventContext {
2
+ requestId: string;
3
+ startedAt: number;
4
+ }
5
+ type ToolEventBase = {
2
6
  type: 'tool.start';
3
7
  tool: 'thinkseq';
4
8
  ts: number;
@@ -17,6 +21,9 @@ export type ToolEvent = {
17
21
  errorMessage: string;
18
22
  durationMs?: number;
19
23
  };
24
+ export type ToolEvent = ToolEventBase & {
25
+ context?: EventContext;
26
+ };
20
27
  export type LifecycleEvent = {
21
28
  type: 'lifecycle.started';
22
29
  ts: number;
@@ -25,13 +32,7 @@ export type LifecycleEvent = {
25
32
  ts: number;
26
33
  signal: string;
27
34
  };
28
- export interface EngineEvent {
29
- type: 'engine.sequence_gap';
30
- ts: number;
31
- expected: number;
32
- received: number;
33
- }
34
35
  export declare function publishToolEvent(event: ToolEvent): void;
35
36
  export declare function publishLifecycleEvent(event: LifecycleEvent): void;
36
- export declare function publishEngineEvent(event: EngineEvent): void;
37
+ export {};
37
38
  //# sourceMappingURL=diagnostics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/lib/diagnostics.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GACjB;IACE,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,IAAI,CAAC;IACT,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,KAAK,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEN,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,qBAAqB,CAAC;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAkBD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAEvD;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAEjE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAE3D"}
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/lib/diagnostics.ts"],"names":[],"mappings":"AAIA,UAAU,YAAY;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,KAAK,aAAa,GACd;IACE,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,IAAI,CAAC;IACT,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,KAAK,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEN,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG;IAAE,OAAO,CAAC,EAAE,YAAY,CAAA;CAAE,CAAC;AAEnE,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AA8B/D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAEvD;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAEjE"}
@@ -1,7 +1,7 @@
1
- import diagnostics_channel from 'node:diagnostics_channel';
2
- const toolChannel = diagnostics_channel.channel('thinkseq:tool');
3
- const lifecycleChannel = diagnostics_channel.channel('thinkseq:lifecycle');
4
- const engineChannel = diagnostics_channel.channel('thinkseq:engine');
1
+ import diagnosticsChannel from 'node:diagnostics_channel';
2
+ import { getRequestContext } from './context.js';
3
+ const toolChannel = diagnosticsChannel.channel('thinkseq:tool');
4
+ const lifecycleChannel = diagnosticsChannel.channel('thinkseq:lifecycle');
5
5
  function safePublish(channel, message) {
6
6
  if (!channel.hasSubscribers)
7
7
  return;
@@ -12,13 +12,23 @@ function safePublish(channel, message) {
12
12
  // Intentional suppression of publication errors
13
13
  }
14
14
  }
15
+ function attachContext(event) {
16
+ const context = getRequestContext();
17
+ if (!context)
18
+ return event;
19
+ return {
20
+ ...event,
21
+ context: {
22
+ ...event.context,
23
+ requestId: context.requestId,
24
+ startedAt: context.startedAt,
25
+ },
26
+ };
27
+ }
15
28
  export function publishToolEvent(event) {
16
- safePublish(toolChannel, event);
29
+ safePublish(toolChannel, attachContext(event));
17
30
  }
18
31
  export function publishLifecycleEvent(event) {
19
32
  safePublish(lifecycleChannel, event);
20
33
  }
21
- export function publishEngineEvent(event) {
22
- safePublish(engineChannel, event);
23
- }
24
34
  //# sourceMappingURL=diagnostics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/lib/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAoC3D,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AACjE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAC3E,MAAM,aAAa,GAAG,mBAAmB,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAErE,SAAS,WAAW,CAClB,OAAoC,EACpC,OAAgB;IAEhB,IAAI,CAAC,OAAO,CAAC,cAAc;QAAE,OAAO;IACpC,IAAI,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,gDAAgD;IAClD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAgB;IAC/C,WAAW,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAqB;IACzD,WAAW,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAkB;IACnD,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/lib/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAoCjD,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AAChE,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAE1E,SAAS,WAAW,CAClB,OAAmC,EACnC,OAAgB;IAEhB,IAAI,CAAC,OAAO,CAAC,cAAc;QAAE,OAAO;IACpC,IAAI,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,gDAAgD;IAClD,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAuC,KAAQ;IACnE,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO;QACL,GAAG,KAAK;QACR,OAAO,EAAE;YACP,GAAG,KAAK,CAAC,OAAO;YAChB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAgB;IAC/C,WAAW,CAAC,WAAW,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAqB;IACzD,WAAW,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { ProcessResult, ThoughtData } from './types.js';
2
+ import type { EngineWorkerResponse } from './workerProtocol.js';
3
+ interface EngineProcessor {
4
+ processThought: (input: ThoughtData) => ProcessResult;
5
+ }
6
+ interface WorkerHandlerDeps {
7
+ engine: EngineProcessor;
8
+ post: (message: EngineWorkerResponse) => void;
9
+ }
10
+ export declare function handleEngineWorkerMessage(raw: unknown, deps: WorkerHandlerDeps): void;
11
+ export {};
12
+ //# sourceMappingURL=engineWorkerHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engineWorkerHandler.d.ts","sourceRoot":"","sources":["../../src/lib/engineWorkerHandler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAEV,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAG7B,UAAU,eAAe;IACvB,cAAc,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,aAAa,CAAC;CACvD;AAED,UAAU,iBAAiB;IACzB,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAC/C;AAmCD,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,iBAAiB,GACtB,IAAI,CAcN"}