@seanmars/tospec 0.8.0 → 0.9.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 (184) hide show
  1. package/README.md +19 -0
  2. package/assets/dashboard/app.js +11 -0
  3. package/dist/cli/index.d.ts.map +1 -1
  4. package/dist/cli/index.js +18 -31
  5. package/dist/cli/index.js.map +1 -1
  6. package/dist/commands/config.d.ts +1 -2
  7. package/dist/commands/config.d.ts.map +1 -1
  8. package/dist/commands/config.js +4 -13
  9. package/dist/commands/config.js.map +1 -1
  10. package/dist/commands/dashboard.d.ts +3 -0
  11. package/dist/commands/dashboard.d.ts.map +1 -1
  12. package/dist/commands/dashboard.js +32 -2
  13. package/dist/commands/dashboard.js.map +1 -1
  14. package/dist/commands/decision.d.ts.map +1 -1
  15. package/dist/commands/decision.js +8 -9
  16. package/dist/commands/decision.js.map +1 -1
  17. package/dist/commands/shared-output.d.ts +18 -4
  18. package/dist/commands/shared-output.d.ts.map +1 -1
  19. package/dist/commands/shared-output.js +16 -3
  20. package/dist/commands/shared-output.js.map +1 -1
  21. package/dist/commands/show.d.ts.map +1 -1
  22. package/dist/commands/show.js +9 -13
  23. package/dist/commands/show.js.map +1 -1
  24. package/dist/commands/validate.d.ts +10 -0
  25. package/dist/commands/validate.d.ts.map +1 -1
  26. package/dist/commands/validate.js +48 -32
  27. package/dist/commands/validate.js.map +1 -1
  28. package/dist/commands/workflow/instructions.d.ts.map +1 -1
  29. package/dist/commands/workflow/instructions.js +20 -6
  30. package/dist/commands/workflow/instructions.js.map +1 -1
  31. package/dist/commands/workflow/new-change.d.ts +2 -0
  32. package/dist/commands/workflow/new-change.d.ts.map +1 -1
  33. package/dist/commands/workflow/new-change.js +15 -7
  34. package/dist/commands/workflow/new-change.js.map +1 -1
  35. package/dist/commands/workflow/schemas.d.ts.map +1 -1
  36. package/dist/commands/workflow/schemas.js +12 -3
  37. package/dist/commands/workflow/schemas.js.map +1 -1
  38. package/dist/commands/workflow/shared.d.ts +1 -3
  39. package/dist/commands/workflow/shared.d.ts.map +1 -1
  40. package/dist/commands/workflow/shared.js +2 -14
  41. package/dist/commands/workflow/shared.js.map +1 -1
  42. package/dist/commands/workflow/status.d.ts.map +1 -1
  43. package/dist/commands/workflow/status.js +6 -2
  44. package/dist/commands/workflow/status.js.map +1 -1
  45. package/dist/commands/workflow/templates.d.ts.map +1 -1
  46. package/dist/commands/workflow/templates.js +13 -2
  47. package/dist/commands/workflow/templates.js.map +1 -1
  48. package/dist/core/archive.d.ts +9 -0
  49. package/dist/core/archive.d.ts.map +1 -1
  50. package/dist/core/archive.js +63 -114
  51. package/dist/core/archive.js.map +1 -1
  52. package/dist/core/artifact-graph/instruction-loader.d.ts +4 -2
  53. package/dist/core/artifact-graph/instruction-loader.d.ts.map +1 -1
  54. package/dist/core/artifact-graph/instruction-loader.js +54 -0
  55. package/dist/core/artifact-graph/instruction-loader.js.map +1 -1
  56. package/dist/core/change-metadata/schema.d.ts +1 -0
  57. package/dist/core/change-metadata/schema.d.ts.map +1 -1
  58. package/dist/core/change-metadata/schema.js +4 -0
  59. package/dist/core/change-metadata/schema.js.map +1 -1
  60. package/dist/core/change-presenter.d.ts.map +1 -1
  61. package/dist/core/change-presenter.js +2 -8
  62. package/dist/core/change-presenter.js.map +1 -1
  63. package/dist/core/change-status-policy.d.ts +1 -1
  64. package/dist/core/change-status-policy.d.ts.map +1 -1
  65. package/dist/core/command-generation/adapters/index.d.ts +1 -2
  66. package/dist/core/command-generation/adapters/index.d.ts.map +1 -1
  67. package/dist/core/command-generation/adapters/index.js +1 -2
  68. package/dist/core/command-generation/adapters/index.js.map +1 -1
  69. package/dist/core/command-generation/index.d.ts +4 -15
  70. package/dist/core/command-generation/index.d.ts.map +1 -1
  71. package/dist/core/command-generation/index.js +5 -17
  72. package/dist/core/command-generation/index.js.map +1 -1
  73. package/dist/core/config-schema.d.ts +0 -14
  74. package/dist/core/config-schema.d.ts.map +1 -1
  75. package/dist/core/config-schema.js +0 -57
  76. package/dist/core/config-schema.js.map +1 -1
  77. package/dist/core/config.d.ts +0 -1
  78. package/dist/core/config.d.ts.map +1 -1
  79. package/dist/core/config.js +0 -4
  80. package/dist/core/config.js.map +1 -1
  81. package/dist/core/dashboard-data.d.ts +2 -1
  82. package/dist/core/dashboard-data.d.ts.map +1 -1
  83. package/dist/core/dashboard-data.js +1 -1
  84. package/dist/core/dashboard-data.js.map +1 -1
  85. package/dist/core/global-config.d.ts +0 -5
  86. package/dist/core/global-config.d.ts.map +1 -1
  87. package/dist/core/global-config.js +3 -20
  88. package/dist/core/global-config.js.map +1 -1
  89. package/dist/core/init.d.ts +0 -1
  90. package/dist/core/init.d.ts.map +1 -1
  91. package/dist/core/init.js +18 -63
  92. package/dist/core/init.js.map +1 -1
  93. package/dist/core/list.d.ts.map +1 -1
  94. package/dist/core/list.js +6 -5
  95. package/dist/core/list.js.map +1 -1
  96. package/dist/core/migrate.d.ts +20 -3
  97. package/dist/core/migrate.d.ts.map +1 -1
  98. package/dist/core/migrate.js +140 -40
  99. package/dist/core/migrate.js.map +1 -1
  100. package/dist/core/parsers/change-parser.d.ts +0 -2
  101. package/dist/core/parsers/change-parser.d.ts.map +1 -1
  102. package/dist/core/parsers/change-parser.js +7 -72
  103. package/dist/core/parsers/change-parser.js.map +1 -1
  104. package/dist/core/parsers/markdown-parser.d.ts +1 -1
  105. package/dist/core/parsers/markdown-parser.d.ts.map +1 -1
  106. package/dist/core/parsers/markdown-parser.js +13 -4
  107. package/dist/core/parsers/markdown-parser.js.map +1 -1
  108. package/dist/core/parsers/requirement-blocks.d.ts +19 -0
  109. package/dist/core/parsers/requirement-blocks.d.ts.map +1 -1
  110. package/dist/core/parsers/requirement-blocks.js +56 -26
  111. package/dist/core/parsers/requirement-blocks.js.map +1 -1
  112. package/dist/core/parsers/requirement-text.d.ts +33 -0
  113. package/dist/core/parsers/requirement-text.d.ts.map +1 -1
  114. package/dist/core/parsers/requirement-text.js +55 -13
  115. package/dist/core/parsers/requirement-text.js.map +1 -1
  116. package/dist/core/profiles.d.ts +2 -10
  117. package/dist/core/profiles.d.ts.map +1 -1
  118. package/dist/core/profiles.js +5 -9
  119. package/dist/core/profiles.js.map +1 -1
  120. package/dist/core/project-config.d.ts +0 -22
  121. package/dist/core/project-config.d.ts.map +1 -1
  122. package/dist/core/project-config.js +5 -75
  123. package/dist/core/project-config.js.map +1 -1
  124. package/dist/core/root-selection.d.ts.map +1 -1
  125. package/dist/core/root-selection.js +2 -2
  126. package/dist/core/root-selection.js.map +1 -1
  127. package/dist/core/shared/index.d.ts +1 -1
  128. package/dist/core/shared/index.d.ts.map +1 -1
  129. package/dist/core/shared/index.js +1 -1
  130. package/dist/core/shared/index.js.map +1 -1
  131. package/dist/core/shared/skill-generation.d.ts +47 -1
  132. package/dist/core/shared/skill-generation.d.ts.map +1 -1
  133. package/dist/core/shared/skill-generation.js +36 -34
  134. package/dist/core/shared/skill-generation.js.map +1 -1
  135. package/dist/core/shared/tool-detection.d.ts +4 -10
  136. package/dist/core/shared/tool-detection.d.ts.map +1 -1
  137. package/dist/core/shared/tool-detection.js +5 -29
  138. package/dist/core/shared/tool-detection.js.map +1 -1
  139. package/dist/core/spec-presenter.d.ts.map +1 -1
  140. package/dist/core/spec-presenter.js +3 -4
  141. package/dist/core/spec-presenter.js.map +1 -1
  142. package/dist/core/specs-apply.d.ts.map +1 -1
  143. package/dist/core/specs-apply.js +1 -0
  144. package/dist/core/specs-apply.js.map +1 -1
  145. package/dist/core/templates/workflows/apply.d.ts.map +1 -1
  146. package/dist/core/templates/workflows/apply.js +35 -57
  147. package/dist/core/templates/workflows/apply.js.map +1 -1
  148. package/dist/core/templates/workflows/archive.d.ts.map +1 -1
  149. package/dist/core/templates/workflows/archive.js +5 -3
  150. package/dist/core/templates/workflows/archive.js.map +1 -1
  151. package/dist/core/templates/workflows/decision.js +1 -1
  152. package/dist/core/templates/workflows/explore.js +1 -1
  153. package/dist/core/templates/workflows/propose.d.ts.map +1 -1
  154. package/dist/core/templates/workflows/propose.js +3 -1
  155. package/dist/core/templates/workflows/propose.js.map +1 -1
  156. package/dist/core/templates/workflows/update.js +2 -2
  157. package/dist/core/templates/workflows/update.js.map +1 -1
  158. package/dist/core/update.d.ts +0 -9
  159. package/dist/core/update.d.ts.map +1 -1
  160. package/dist/core/update.js +9 -55
  161. package/dist/core/update.js.map +1 -1
  162. package/dist/core/validation/validator.d.ts +7 -1
  163. package/dist/core/validation/validator.d.ts.map +1 -1
  164. package/dist/core/validation/validator.js +98 -17
  165. package/dist/core/validation/validator.js.map +1 -1
  166. package/dist/ui/welcome-screen.d.ts.map +1 -1
  167. package/dist/ui/welcome-screen.js +6 -3
  168. package/dist/ui/welcome-screen.js.map +1 -1
  169. package/dist/utils/change-utils.d.ts +1 -1
  170. package/dist/utils/change-utils.d.ts.map +1 -1
  171. package/dist/utils/link.d.ts +2 -18
  172. package/dist/utils/link.d.ts.map +1 -1
  173. package/dist/utils/link.js +2 -65
  174. package/dist/utils/link.js.map +1 -1
  175. package/package.json +1 -1
  176. package/schemas/decision/templates/decision.md +3 -0
  177. package/dist/core/command-generation/adapters/cursor.d.ts +0 -14
  178. package/dist/core/command-generation/adapters/cursor.d.ts.map +0 -1
  179. package/dist/core/command-generation/adapters/cursor.js +0 -31
  180. package/dist/core/command-generation/adapters/cursor.js.map +0 -1
  181. package/dist/core/command-generation/registry.d.ts +0 -24
  182. package/dist/core/command-generation/registry.d.ts.map +0 -1
  183. package/dist/core/command-generation/registry.js +0 -38
  184. package/dist/core/command-generation/registry.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/utils/link.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpD;;;GAGG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAatE;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAWtF;AAgBD;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAuBpF"}
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/utils/link.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAatE"}
@@ -1,8 +1,8 @@
1
1
  import * as fs from 'node:fs';
2
2
  import * as path from 'node:path';
3
3
  /**
4
- * Recursively copies a directory. Used as the fallback when a symlink/junction
5
- * can't be created (no dev-mode/permission on Windows, etc.).
4
+ * Recursively copies a directory, replacing any existing dest. This is how
5
+ * init/update deliver skill files into each tool's directory.
6
6
  */
7
7
  export async function copyDir(src, dest) {
8
8
  await fs.promises.rm(dest, { recursive: true, force: true });
@@ -19,67 +19,4 @@ export async function copyDir(src, dest) {
19
19
  }
20
20
  }
21
21
  }
22
- /**
23
- * Mirrors a directory tree using hard-linked files. Directories themselves
24
- * cannot be hard-linked, so matching real directories are created at dest.
25
- */
26
- export async function ensureHardLinkedDir(src, dest) {
27
- await fs.promises.rm(dest, { recursive: true, force: true });
28
- await fs.promises.mkdir(dest, { recursive: true });
29
- try {
30
- await hardLinkDir(src, dest);
31
- return 'hardlink';
32
- }
33
- catch {
34
- await copyDir(src, dest);
35
- return 'copy';
36
- }
37
- }
38
- async function hardLinkDir(src, dest) {
39
- const entries = await fs.promises.readdir(src, { withFileTypes: true });
40
- for (const entry of entries) {
41
- const srcPath = path.join(src, entry.name);
42
- const destPath = path.join(dest, entry.name);
43
- if (entry.isDirectory()) {
44
- await fs.promises.mkdir(destPath, { recursive: true });
45
- await hardLinkDir(srcPath, destPath);
46
- }
47
- else {
48
- await fs.promises.link(srcPath, destPath);
49
- }
50
- }
51
- }
52
- /**
53
- * Ensures `linkPath` resolves to `target` (both must be absolute): a directory
54
- * symlink (junction on Windows, since junctions need no admin/dev-mode
55
- * privilege) when possible, falling back to a recursive copy otherwise.
56
- *
57
- * Idempotent: a symlink already pointing at `target` is left untouched. A
58
- * symlink pointing elsewhere, or a real file/directory sitting at `linkPath`,
59
- * is removed before (re)creating the link.
60
- */
61
- export async function ensureLink(target, linkPath) {
62
- await fs.promises.mkdir(path.dirname(linkPath), { recursive: true });
63
- const existing = await fs.promises.lstat(linkPath).catch(() => null);
64
- if (existing?.isSymbolicLink()) {
65
- const currentTarget = await fs.promises.readlink(linkPath).catch(() => null);
66
- const resolvedCurrent = currentTarget ? path.resolve(path.dirname(linkPath), currentTarget) : null;
67
- if (resolvedCurrent === path.resolve(target)) {
68
- return 'link';
69
- }
70
- await fs.promises.rm(linkPath, { recursive: true, force: true });
71
- }
72
- else if (existing) {
73
- await fs.promises.rm(linkPath, { recursive: true, force: true });
74
- }
75
- const symlinkType = process.platform === 'win32' ? 'junction' : 'dir';
76
- try {
77
- await fs.promises.symlink(target, linkPath, symlinkType);
78
- return 'link';
79
- }
80
- catch {
81
- await copyDir(target, linkPath);
82
- return 'copy';
83
- }
84
- }
85
22
  //# sourceMappingURL=link.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/utils/link.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/utils/link.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,IAAY;IACrD,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seanmars/tospec",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "Spec-driven development CLI for structured requirements and issue workflows",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -22,6 +22,9 @@
22
22
  ## 後續工作
23
23
  <!-- 分階段的後續實作項目 -->
24
24
 
25
+ ## 關聯變更
26
+ <!-- 選配: 實作此決策的 change (由 tospec new change --decisions 反向連結); 列出 change 名稱, 歸檔後可補歸檔路徑; 尚無實作可省略 -->
27
+
25
28
  ## 決策過程
26
29
  <!-- 選配: 關鍵問答紀錄; 每組以 **Q:** 開頭, 下一段為回答; 摘要即可, 不貼逐字稿; 無互動討論可省略 -->
27
30
 
@@ -1,14 +0,0 @@
1
- /**
2
- * Cursor Command Adapter
3
- *
4
- * Formats commands for Cursor following its frontmatter specification.
5
- * Cursor uses a different frontmatter format and file naming convention.
6
- */
7
- import type { ToolCommandAdapter } from '../types.js';
8
- /**
9
- * Cursor adapter for command generation.
10
- * File path: .cursor/commands/tospec-<id>.md
11
- * Frontmatter: name (as /tospec-<id>), id, category, description
12
- */
13
- export declare const cursorAdapter: ToolCommandAdapter;
14
- //# sourceMappingURL=cursor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../../../src/core/command-generation/adapters/cursor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAkB,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtE;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,kBAkB3B,CAAC"}
@@ -1,31 +0,0 @@
1
- /**
2
- * Cursor Command Adapter
3
- *
4
- * Formats commands for Cursor following its frontmatter specification.
5
- * Cursor uses a different frontmatter format and file naming convention.
6
- */
7
- import path from 'path';
8
- import { escapeYamlValue } from '../yaml.js';
9
- /**
10
- * Cursor adapter for command generation.
11
- * File path: .cursor/commands/tospec-<id>.md
12
- * Frontmatter: name (as /tospec-<id>), id, category, description
13
- */
14
- export const cursorAdapter = {
15
- toolId: 'cursor',
16
- getFilePath(commandId) {
17
- return path.join('.cursor', 'commands', `tospec-${commandId}.md`);
18
- },
19
- formatFile(content) {
20
- return `---
21
- name: /tospec-${content.id}
22
- id: tospec-${content.id}
23
- category: ${escapeYamlValue(content.category)}
24
- description: ${escapeYamlValue(content.description)}
25
- ---
26
-
27
- ${content.body}
28
- `;
29
- },
30
- };
31
- //# sourceMappingURL=cursor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../../src/core/command-generation/adapters/cursor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAuB;IAC/C,MAAM,EAAE,QAAQ;IAEhB,WAAW,CAAC,SAAiB;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,SAAS,KAAK,CAAC,CAAC;IACpE,CAAC;IAED,UAAU,CAAC,OAAuB;QAChC,OAAO;gBACK,OAAO,CAAC,EAAE;aACb,OAAO,CAAC,EAAE;YACX,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC;eAC9B,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC;;;EAGjD,OAAO,CAAC,IAAI;CACb,CAAC;IACA,CAAC;CACF,CAAC"}
@@ -1,24 +0,0 @@
1
- /**
2
- * Command Adapter Registry
3
- *
4
- * Centralized registry for tool command adapters. tospec ships adapters for
5
- * the team's tools only (claude, cursor). Add a tool by writing an adapter in
6
- * adapters/, exporting it from adapters/index.ts, and registering one line
7
- * below.
8
- */
9
- import type { ToolCommandAdapter } from './types.js';
10
- /**
11
- * Registry for looking up tool command adapters.
12
- */
13
- export declare class CommandAdapterRegistry {
14
- private static adapters;
15
- /** Register a tool command adapter. */
16
- static register(adapter: ToolCommandAdapter): void;
17
- /** Get an adapter by tool ID. */
18
- static get(toolId: string): ToolCommandAdapter | undefined;
19
- /** Get all registered adapters. */
20
- static getAll(): ToolCommandAdapter[];
21
- /** Check if an adapter is registered for a tool. */
22
- static has(toolId: string): boolean;
23
- }
24
- //# sourceMappingURL=registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/core/command-generation/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAIrD;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA8C;IAQrE,uCAAuC;IACvC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAIlD,iCAAiC;IACjC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAI1D,mCAAmC;IACnC,MAAM,CAAC,MAAM,IAAI,kBAAkB,EAAE;IAIrC,oDAAoD;IACpD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;CAGpC"}
@@ -1,38 +0,0 @@
1
- /**
2
- * Command Adapter Registry
3
- *
4
- * Centralized registry for tool command adapters. tospec ships adapters for
5
- * the team's tools only (claude, cursor). Add a tool by writing an adapter in
6
- * adapters/, exporting it from adapters/index.ts, and registering one line
7
- * below.
8
- */
9
- import { claudeAdapter } from './adapters/claude.js';
10
- import { cursorAdapter } from './adapters/cursor.js';
11
- /**
12
- * Registry for looking up tool command adapters.
13
- */
14
- export class CommandAdapterRegistry {
15
- static adapters = new Map();
16
- // Static initializer - register built-in adapters
17
- static {
18
- CommandAdapterRegistry.register(claudeAdapter);
19
- CommandAdapterRegistry.register(cursorAdapter);
20
- }
21
- /** Register a tool command adapter. */
22
- static register(adapter) {
23
- CommandAdapterRegistry.adapters.set(adapter.toolId, adapter);
24
- }
25
- /** Get an adapter by tool ID. */
26
- static get(toolId) {
27
- return CommandAdapterRegistry.adapters.get(toolId);
28
- }
29
- /** Get all registered adapters. */
30
- static getAll() {
31
- return Array.from(CommandAdapterRegistry.adapters.values());
32
- }
33
- /** Check if an adapter is registered for a tool. */
34
- static has(toolId) {
35
- return CommandAdapterRegistry.adapters.has(toolId);
36
- }
37
- }
38
- //# sourceMappingURL=registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/core/command-generation/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;GAEG;AACH,MAAM,OAAO,sBAAsB;IACzB,MAAM,CAAC,QAAQ,GAAoC,IAAI,GAAG,EAAE,CAAC;IAErE,kDAAkD;IAClD;QACE,sBAAsB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC/C,sBAAsB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACjD,CAAC;IAED,uCAAuC;IACvC,MAAM,CAAC,QAAQ,CAAC,OAA2B;QACzC,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED,iCAAiC;IACjC,MAAM,CAAC,GAAG,CAAC,MAAc;QACvB,OAAO,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,mCAAmC;IACnC,MAAM,CAAC,MAAM;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,oDAAoD;IACpD,MAAM,CAAC,GAAG,CAAC,MAAc;QACvB,OAAO,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC"}