@j0hanz/thinkseq-mcp 1.0.4 → 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 (99) hide show
  1. package/README.md +238 -111
  2. package/dist/app.d.ts +2 -35
  3. package/dist/app.d.ts.map +1 -1
  4. package/dist/app.js +13 -91
  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 +65 -147
  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/package.d.ts.map +1 -1
  64. package/dist/lib/package.js +17 -7
  65. package/dist/lib/package.js.map +1 -1
  66. package/dist/lib/protocolGuards.d.ts.map +1 -1
  67. package/dist/lib/protocolGuards.js +8 -5
  68. package/dist/lib/protocolGuards.js.map +1 -1
  69. package/dist/lib/stdioGuards.d.ts.map +1 -1
  70. package/dist/lib/stdioGuards.js +23 -12
  71. package/dist/lib/stdioGuards.js.map +1 -1
  72. package/dist/lib/types.d.ts +15 -13
  73. package/dist/lib/types.d.ts.map +1 -1
  74. package/dist/lib/workerEngineClient.d.ts +23 -0
  75. package/dist/lib/workerEngineClient.d.ts.map +1 -0
  76. package/dist/lib/workerEngineClient.js +144 -0
  77. package/dist/lib/workerEngineClient.js.map +1 -0
  78. package/dist/lib/workerProtocol.d.ts +21 -0
  79. package/dist/lib/workerProtocol.d.ts.map +1 -0
  80. package/dist/lib/workerProtocol.js +22 -0
  81. package/dist/lib/workerProtocol.js.map +1 -0
  82. package/dist/schemas/inputs.d.ts +1 -13
  83. package/dist/schemas/inputs.d.ts.map +1 -1
  84. package/dist/schemas/inputs.js +5 -27
  85. package/dist/schemas/inputs.js.map +1 -1
  86. package/dist/schemas/outputs.d.ts +14 -16
  87. package/dist/schemas/outputs.d.ts.map +1 -1
  88. package/dist/schemas/outputs.js +48 -61
  89. package/dist/schemas/outputs.js.map +1 -1
  90. package/dist/tools/thinkseq.d.ts +7 -2
  91. package/dist/tools/thinkseq.d.ts.map +1 -1
  92. package/dist/tools/thinkseq.js +71 -59
  93. package/dist/tools/thinkseq.js.map +1 -1
  94. package/dist/tsconfig.tsbuildinfo +1 -1
  95. package/dist/workers/engineWorker.d.ts +2 -0
  96. package/dist/workers/engineWorker.d.ts.map +1 -0
  97. package/dist/workers/engineWorker.js +15 -0
  98. package/dist/workers/engineWorker.js.map +1 -0
  99. package/package.json +8 -6
@@ -1,78 +1,65 @@
1
1
  import { z } from 'zod';
2
- const ThoughtTypeSchema = z.enum([
3
- 'analysis',
4
- 'hypothesis',
5
- 'verification',
6
- 'revision',
7
- 'conclusion',
8
- ]);
9
- const ContextSchema = z.strictObject({
10
- recentThoughts: z
11
- .array(z.strictObject({
12
- number: z.number(),
13
- preview: z.string(),
14
- type: ThoughtTypeSchema.optional(),
15
- }))
16
- .max(5),
17
- currentBranch: z.string().optional(),
18
- hasRevisions: z.boolean(),
19
- });
20
- const ResultSchema = z.strictObject({
2
+ const ThinkSeqResultSchema = z.object({
21
3
  thoughtNumber: z.number(),
22
4
  totalThoughts: z.number(),
23
- nextThoughtNeeded: z.boolean(),
5
+ progress: z.number().min(0).max(1),
6
+ isComplete: z.boolean().describe('True when thoughtNumber >= totalThoughts'),
24
7
  thoughtHistoryLength: z.number(),
25
- branches: z.array(z.string()),
26
- context: ContextSchema,
8
+ hasRevisions: z.boolean().describe('True if any thought has been revised'),
9
+ activePathLength: z
10
+ .number()
11
+ .describe('Count of non-superseded thoughts in active chain'),
12
+ revisableThoughts: z
13
+ .array(z.number())
14
+ .describe('Thought numbers available for revision'),
15
+ context: z.object({
16
+ recentThoughts: z
17
+ .array(z.object({
18
+ number: z.number(),
19
+ preview: z.string(),
20
+ }))
21
+ .max(5),
22
+ revisionInfo: z
23
+ .object({
24
+ revises: z.number(),
25
+ supersedes: z.array(z.number()),
26
+ })
27
+ .optional(),
28
+ }),
27
29
  });
28
- const ErrorSchema = z.strictObject({
30
+ const ThinkSeqErrorSchema = z.object({
29
31
  code: z.string(),
30
32
  message: z.string(),
31
33
  });
32
- function addSuccessIssues(value, ctx) {
33
- if (value.result === undefined) {
34
- ctx.addIssue({
35
- code: 'custom',
36
- message: 'result is required when ok is true',
37
- path: ['result'],
38
- });
39
- }
40
- if (value.error !== undefined) {
41
- ctx.addIssue({
42
- code: 'custom',
43
- message: 'error must be omitted when ok is true',
44
- path: ['error'],
45
- });
46
- }
47
- }
48
- function addFailureIssues(value, ctx) {
49
- if (value.error === undefined) {
50
- ctx.addIssue({
51
- code: 'custom',
52
- message: 'error is required when ok is false',
53
- path: ['error'],
54
- });
55
- }
56
- if (value.result !== undefined) {
57
- ctx.addIssue({
58
- code: 'custom',
59
- message: 'result must be omitted when ok is false',
60
- path: ['result'],
61
- });
62
- }
63
- }
64
34
  export const ThinkSeqOutputSchema = z
65
- .strictObject({
35
+ .object({
66
36
  ok: z.boolean(),
67
- result: ResultSchema.optional(),
68
- error: ErrorSchema.optional(),
37
+ result: ThinkSeqResultSchema.optional(),
38
+ error: ThinkSeqErrorSchema.optional(),
69
39
  })
70
40
  .superRefine((value, ctx) => {
71
41
  if (value.ok) {
72
- addSuccessIssues(value, ctx);
42
+ if (!value.result) {
43
+ ctx.addIssue({
44
+ code: 'custom',
45
+ path: ['result'],
46
+ message: 'result is required when ok is true',
47
+ });
48
+ }
49
+ if (value.error) {
50
+ ctx.addIssue({
51
+ code: 'custom',
52
+ path: ['error'],
53
+ message: 'error must be undefined when ok is true',
54
+ });
55
+ }
73
56
  }
74
- else {
75
- addFailureIssues(value, ctx);
57
+ else if (!value.error) {
58
+ ctx.addIssue({
59
+ code: 'custom',
60
+ path: ['error'],
61
+ message: 'error is required when ok is false',
62
+ });
76
63
  }
77
64
  });
78
65
  //# sourceMappingURL=outputs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"outputs.js","sourceRoot":"","sources":["../../src/schemas/outputs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"outputs.js","sourceRoot":"","sources":["../../src/schemas/outputs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAC5E,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE;IAChC,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IAC1E,gBAAgB,EAAE,CAAC;SAChB,MAAM,EAAE;SACR,QAAQ,CAAC,kDAAkD,CAAC;IAC/D,iBAAiB,EAAE,CAAC;SACjB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CAAC,wCAAwC,CAAC;IACrD,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,cAAc,EAAE,CAAC;aACd,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;YACP,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;YAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;SACpB,CAAC,CACH;aACA,GAAG,CAAC,CAAC,CAAC;QACT,YAAY,EAAE,CAAC;aACZ,MAAM,CAAC;YACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SAChC,CAAC;aACD,QAAQ,EAAE;KACd,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;IACf,MAAM,EAAE,oBAAoB,CAAC,QAAQ,EAAE;IACvC,KAAK,EAAE,mBAAmB,CAAC,QAAQ,EAAE;CACtC,CAAC;KACD,WAAW,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC1B,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,QAAQ,CAAC;gBAChB,OAAO,EAAE,oCAAoC;aAC9C,CAAC,CAAC;QACL,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,OAAO,CAAC;gBACf,OAAO,EAAE,yCAAyC;aACnD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACxB,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,OAAO,CAAC;YACf,OAAO,EAAE,oCAAoC;SAC9C,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -1,7 +1,12 @@
1
1
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import type { ThinkingEngine } from '../engine.js';
3
- type ToolRegistrar = Pick<McpServer, 'registerTool'>;
4
- type EngineLike = Pick<ThinkingEngine, 'processThought'>;
3
+ import type { ThoughtData } from '../lib/types.js';
4
+ interface ToolRegistrar {
5
+ registerTool: McpServer['registerTool'];
6
+ }
7
+ interface EngineLike {
8
+ processThought: (input: ThoughtData) => ReturnType<ThinkingEngine['processThought']> | Promise<ReturnType<ThinkingEngine['processThought']>>;
9
+ }
5
10
  export declare function registerThinkSeq(server: ToolRegistrar, engine: EngineLike): void;
6
11
  export {};
7
12
  //# sourceMappingURL=thinkseq.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"thinkseq.d.ts","sourceRoot":"","sources":["../../src/tools/thinkseq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAyBnD,KAAK,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AACrD,KAAK,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;AAiCzD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,UAAU,GACjB,IAAI,CAiCN"}
1
+ {"version":3,"file":"thinkseq.d.ts","sourceRoot":"","sources":["../../src/tools/thinkseq.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAKnD,OAAO,KAAK,EAAiB,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAiBlE,UAAU,aAAa;IACrB,YAAY,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;CACzC;AAED,UAAU,UAAU;IAClB,cAAc,EAAE,CACd,KAAK,EAAE,WAAW,KAEhB,UAAU,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,GAC5C,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAC3D;AA+FD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,UAAU,GACjB,IAAI,CAIN"}
@@ -1,84 +1,96 @@
1
+ import { performance } from 'node:perf_hooks';
2
+ import { runWithContext } from '../lib/context.js';
1
3
  import { publishToolEvent } from '../lib/diagnostics.js';
2
4
  import { createErrorResponse, getErrorMessage } from '../lib/errors.js';
3
5
  import { ThinkSeqInputSchema } from '../schemas/inputs.js';
4
6
  import { ThinkSeqOutputSchema } from '../schemas/outputs.js';
5
7
  const THINKSEQ_TOOL_DEFINITION = {
6
8
  title: 'Think Sequentially',
7
- description: `Structured sequential thinking with branching and revision support.
9
+ description: `Record a concise thinking step (max 2000 chars). Be brief: capture only the essential insight, calculation, or decision.
8
10
 
9
- Use for:
10
- - Breaking down complex problems into steps
11
- - Exploring alternative solution paths (branching)
12
- - Revising earlier thinking based on new insights
11
+ REVISION: If you realize an earlier step was wrong or want to try a different approach, use \`revisesThought\` to correct it. Both versions are preserved for audit.
13
12
 
14
- Key parameters:
15
- - thought: Current thinking step
16
- - thoughtNumber: Step number (starts at 1)
17
- - totalThoughts: Estimated total (adjustable)
18
- - nextThoughtNeeded: false only when done`,
13
+ Example: { "thought": "Better approach: use caching", "revisesThought": 3 }
14
+
15
+ Returns: thoughtNumber, progress (0-1), isComplete, revisableThoughts, and recent thought previews.`,
19
16
  inputSchema: ThinkSeqInputSchema,
20
17
  outputSchema: ThinkSeqOutputSchema,
21
18
  };
22
- function getContextFields(input) {
23
- return {
24
- ...(input.isRevision !== undefined && { isRevision: input.isRevision }),
25
- ...(input.revisesThought !== undefined && {
26
- revisesThought: input.revisesThought,
27
- }),
28
- ...(input.thoughtType !== undefined && { thoughtType: input.thoughtType }),
29
- };
19
+ function publishToolStart() {
20
+ publishToolEvent({
21
+ type: 'tool.start',
22
+ tool: 'thinkseq',
23
+ ts: Date.now(),
24
+ });
30
25
  }
31
- function getBranchFields(input) {
32
- return {
33
- ...(input.branchFromThought !== undefined && {
34
- branchFromThought: input.branchFromThought,
35
- }),
36
- ...(input.branchId !== undefined && { branchId: input.branchId }),
37
- };
26
+ function publishToolSuccess(durationMs) {
27
+ publishToolEvent({
28
+ type: 'tool.end',
29
+ tool: 'thinkseq',
30
+ ts: Date.now(),
31
+ ok: true,
32
+ durationMs,
33
+ });
38
34
  }
39
- function normalizeThoughtInput(input) {
35
+ function publishToolFailure(errorMessage, durationMs) {
36
+ publishToolEvent({
37
+ type: 'tool.end',
38
+ tool: 'thinkseq',
39
+ ts: Date.now(),
40
+ ok: false,
41
+ errorCode: 'E_THINK',
42
+ errorMessage,
43
+ durationMs,
44
+ });
45
+ }
46
+ function buildSuccessResponse(result) {
47
+ if (!result.ok) {
48
+ return createErrorResponse(result.error.code, result.error.message);
49
+ }
50
+ const structured = {
51
+ ok: true,
52
+ result: {
53
+ ...result.result,
54
+ context: {
55
+ ...result.result.context,
56
+ recentThoughts: [...result.result.context.recentThoughts],
57
+ },
58
+ },
59
+ };
40
60
  return {
41
- thought: input.thought,
42
- thoughtNumber: input.thoughtNumber,
43
- totalThoughts: input.totalThoughts,
44
- nextThoughtNeeded: input.nextThoughtNeeded,
45
- ...getContextFields(input),
46
- ...getBranchFields(input),
61
+ content: [{ type: 'text', text: JSON.stringify(structured) }],
62
+ structuredContent: structured,
47
63
  };
48
64
  }
49
- export function registerThinkSeq(server, engine) {
50
- server.registerTool('thinkseq', THINKSEQ_TOOL_DEFINITION, (input) => {
51
- const normalized = normalizeThoughtInput(input);
52
- publishToolEvent({
53
- type: 'tool.start',
54
- tool: 'thinkseq',
55
- ts: Date.now(),
56
- });
65
+ function getDurationMs(start) {
66
+ return Math.max(0, performance.now() - start);
67
+ }
68
+ async function handleThinkSeq(engine, input) {
69
+ return runWithContext(async () => {
70
+ const normalized = {
71
+ thought: input.thought,
72
+ totalThoughts: input.totalThoughts,
73
+ ...(input.revisesThought !== undefined && {
74
+ revisesThought: input.revisesThought,
75
+ }),
76
+ };
77
+ publishToolStart();
78
+ const start = performance.now();
57
79
  try {
58
- const result = engine.processThought(normalized);
59
- publishToolEvent({
60
- type: 'tool.end',
61
- tool: 'thinkseq',
62
- ts: Date.now(),
63
- ok: true,
64
- });
65
- return {
66
- content: [{ type: 'text', text: JSON.stringify(result) }],
67
- structuredContent: result,
68
- };
80
+ const result = await engine.processThought(normalized);
81
+ const durationMs = getDurationMs(start);
82
+ publishToolSuccess(durationMs);
83
+ return buildSuccessResponse(result);
69
84
  }
70
85
  catch (err) {
71
86
  const errorMessage = getErrorMessage(err);
72
- publishToolEvent({
73
- type: 'tool.end',
74
- tool: 'thinkseq',
75
- ts: Date.now(),
76
- ok: false,
77
- errorCode: 'E_THINK',
78
- errorMessage,
79
- });
87
+ const durationMs = getDurationMs(start);
88
+ publishToolFailure(errorMessage, durationMs);
80
89
  return createErrorResponse('E_THINK', errorMessage);
81
90
  }
82
91
  });
83
92
  }
93
+ export function registerThinkSeq(server, engine) {
94
+ server.registerTool('thinkseq', THINKSEQ_TOOL_DEFINITION, (input) => handleThinkSeq(engine, input));
95
+ }
84
96
  //# sourceMappingURL=thinkseq.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"thinkseq.js","sourceRoot":"","sources":["../../src/tools/thinkseq.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"thinkseq.js","sourceRoot":"","sources":["../../src/tools/thinkseq.ts"],"names":[],"mappings":"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"}