@clawplays/ospec-cli 0.3.8 → 0.3.10

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 (168) hide show
  1. package/.ospec/templates/hooks/post-merge +9 -3
  2. package/.ospec/templates/hooks/pre-commit +9 -3
  3. package/README.md +9 -1
  4. package/SKILL.md +1 -1
  5. package/assets/git-hooks/post-merge +4 -2
  6. package/assets/git-hooks/pre-commit +4 -2
  7. package/dist/advanced/BatchOperations.d.ts +1 -2
  8. package/dist/advanced/BatchOperations.js +1 -2
  9. package/dist/advanced/CachingLayer.d.ts +1 -2
  10. package/dist/advanced/CachingLayer.js +1 -2
  11. package/dist/advanced/FeatureUpdater.d.ts +1 -2
  12. package/dist/advanced/FeatureUpdater.js +1 -2
  13. package/dist/advanced/PerformanceMonitor.d.ts +1 -2
  14. package/dist/advanced/PerformanceMonitor.js +1 -2
  15. package/dist/advanced/StatePersistence.d.ts +1 -2
  16. package/dist/advanced/StatePersistence.js +1 -2
  17. package/dist/advanced/index.d.ts +1 -2
  18. package/dist/advanced/index.js +1 -2
  19. package/dist/cli/commands/config.d.ts +1 -2
  20. package/dist/cli/commands/config.js +1 -2
  21. package/dist/cli/commands/feature.d.ts +1 -2
  22. package/dist/cli/commands/feature.js +1 -2
  23. package/dist/cli/commands/index.d.ts +1 -2
  24. package/dist/cli/commands/index.js +1 -2
  25. package/dist/cli/commands/project.d.ts +1 -2
  26. package/dist/cli/commands/project.js +1 -2
  27. package/dist/cli/commands/validate.d.ts +1 -2
  28. package/dist/cli/commands/validate.js +1 -2
  29. package/dist/cli/index.d.ts +1 -2
  30. package/dist/cli/index.js +1 -2
  31. package/dist/cli.d.ts +1 -2
  32. package/dist/cli.js +1 -2
  33. package/dist/commands/ArchiveCommand.d.ts +1 -2
  34. package/dist/commands/ArchiveCommand.js +0 -1
  35. package/dist/commands/BaseCommand.d.ts +1 -2
  36. package/dist/commands/BaseCommand.js +1 -2
  37. package/dist/commands/BatchCommand.d.ts +1 -2
  38. package/dist/commands/BatchCommand.js +1 -2
  39. package/dist/commands/ChangesCommand.js +0 -1
  40. package/dist/commands/DocsCommand.d.ts +1 -2
  41. package/dist/commands/DocsCommand.js +0 -1
  42. package/dist/commands/IndexCommand.d.ts +1 -2
  43. package/dist/commands/IndexCommand.js +1 -2
  44. package/dist/commands/InitCommand.d.ts +1 -2
  45. package/dist/commands/InitCommand.js +0 -1
  46. package/dist/commands/NewCommand.d.ts +0 -1
  47. package/dist/commands/NewCommand.js +0 -1
  48. package/dist/commands/PluginsCommand.d.ts +0 -1
  49. package/dist/commands/PluginsCommand.js +0 -1
  50. package/dist/commands/ProgressCommand.d.ts +1 -2
  51. package/dist/commands/ProgressCommand.js +1 -2
  52. package/dist/commands/QueueCommand.d.ts +0 -1
  53. package/dist/commands/QueueCommand.js +0 -1
  54. package/dist/commands/RunCommand.d.ts +0 -1
  55. package/dist/commands/RunCommand.js +0 -1
  56. package/dist/commands/SkillCommand.d.ts +0 -1
  57. package/dist/commands/SkillCommand.js +1 -2
  58. package/dist/commands/SkillsCommand.d.ts +1 -2
  59. package/dist/commands/SkillsCommand.js +1 -2
  60. package/dist/commands/StatusCommand.d.ts +1 -2
  61. package/dist/commands/StatusCommand.js +0 -1
  62. package/dist/commands/UpdateCommand.d.ts +0 -1
  63. package/dist/commands/UpdateCommand.js +37 -2
  64. package/dist/commands/VerifyCommand.d.ts +1 -2
  65. package/dist/commands/VerifyCommand.js +0 -1
  66. package/dist/commands/WorkflowCommand.d.ts +0 -1
  67. package/dist/commands/WorkflowCommand.js +0 -1
  68. package/dist/commands/index.d.ts +0 -1
  69. package/dist/commands/index.js +0 -1
  70. package/dist/core/constants.d.ts +1 -2
  71. package/dist/core/constants.js +1 -2
  72. package/dist/core/errors.d.ts +1 -2
  73. package/dist/core/errors.js +1 -2
  74. package/dist/core/index.d.ts +1 -2
  75. package/dist/core/index.js +1 -2
  76. package/dist/core/types.d.ts +0 -1
  77. package/dist/core/types.js +1 -2
  78. package/dist/index.d.ts +1 -2
  79. package/dist/index.js +1 -2
  80. package/dist/presets/ProjectPresets.d.ts +0 -1
  81. package/dist/presets/ProjectPresets.js +0 -1
  82. package/dist/scaffolds/ProjectScaffoldPresets.d.ts +1 -2
  83. package/dist/scaffolds/ProjectScaffoldPresets.js +1 -2
  84. package/dist/services/ConfigManager.d.ts +1 -2
  85. package/dist/services/ConfigManager.js +0 -1
  86. package/dist/services/FeatureManager.d.ts +1 -2
  87. package/dist/services/FeatureManager.js +1 -2
  88. package/dist/services/FileService.d.ts +1 -2
  89. package/dist/services/FileService.js +0 -1
  90. package/dist/services/IndexBuilder.d.ts +1 -2
  91. package/dist/services/IndexBuilder.js +1 -2
  92. package/dist/services/Logger.d.ts +1 -2
  93. package/dist/services/Logger.js +1 -2
  94. package/dist/services/ProjectAssetRegistry.d.ts +0 -1
  95. package/dist/services/ProjectAssetRegistry.js +1 -2
  96. package/dist/services/ProjectAssetService.d.ts +0 -1
  97. package/dist/services/ProjectAssetService.js +4 -2
  98. package/dist/services/ProjectScaffoldCommandService.d.ts +1 -2
  99. package/dist/services/ProjectScaffoldCommandService.js +0 -1
  100. package/dist/services/ProjectScaffoldService.d.ts +1 -2
  101. package/dist/services/ProjectScaffoldService.js +0 -1
  102. package/dist/services/ProjectService.d.ts +0 -1
  103. package/dist/services/ProjectService.js +10 -5
  104. package/dist/services/QueueService.d.ts +0 -1
  105. package/dist/services/QueueService.js +0 -1
  106. package/dist/services/RunService.d.ts +0 -1
  107. package/dist/services/RunService.js +0 -1
  108. package/dist/services/SkillParser.d.ts +1 -2
  109. package/dist/services/SkillParser.js +0 -1
  110. package/dist/services/StateManager.d.ts +0 -1
  111. package/dist/services/StateManager.js +0 -1
  112. package/dist/services/TemplateEngine.d.ts +1 -2
  113. package/dist/services/TemplateEngine.js +1 -2
  114. package/dist/services/TemplateGenerator.d.ts +1 -2
  115. package/dist/services/TemplateGenerator.js +0 -1
  116. package/dist/services/ValidationService.d.ts +1 -2
  117. package/dist/services/ValidationService.js +1 -2
  118. package/dist/services/Validator.d.ts +1 -2
  119. package/dist/services/Validator.js +1 -2
  120. package/dist/services/index.d.ts +0 -1
  121. package/dist/services/index.js +0 -1
  122. package/dist/services/templates/ExecutionTemplateBuilder.d.ts +1 -2
  123. package/dist/services/templates/ExecutionTemplateBuilder.js +0 -1
  124. package/dist/services/templates/ProjectTemplateBuilder.d.ts +1 -2
  125. package/dist/services/templates/ProjectTemplateBuilder.js +0 -1
  126. package/dist/services/templates/TemplateBuilderBase.d.ts +0 -1
  127. package/dist/services/templates/TemplateBuilderBase.js +0 -1
  128. package/dist/services/templates/TemplateInputFactory.d.ts +1 -2
  129. package/dist/services/templates/TemplateInputFactory.js +0 -1
  130. package/dist/services/templates/templateTypes.d.ts +0 -1
  131. package/dist/services/templates/templateTypes.js +1 -2
  132. package/dist/tools/build-index.js +115 -18
  133. package/dist/utils/DateUtils.d.ts +1 -2
  134. package/dist/utils/DateUtils.js +1 -2
  135. package/dist/utils/PathUtils.d.ts +0 -1
  136. package/dist/utils/PathUtils.js +0 -1
  137. package/dist/utils/StringUtils.d.ts +1 -2
  138. package/dist/utils/StringUtils.js +1 -2
  139. package/dist/utils/helpers.d.ts +0 -1
  140. package/dist/utils/helpers.js +0 -1
  141. package/dist/utils/index.d.ts +1 -2
  142. package/dist/utils/index.js +1 -2
  143. package/dist/utils/logger.d.ts +1 -2
  144. package/dist/utils/logger.js +1 -2
  145. package/dist/utils/path.d.ts +1 -2
  146. package/dist/utils/path.js +1 -2
  147. package/dist/utils/subcommandHelp.d.ts +0 -1
  148. package/dist/utils/subcommandHelp.js +0 -1
  149. package/dist/workflow/ArchiveGate.d.ts +1 -2
  150. package/dist/workflow/ArchiveGate.js +1 -2
  151. package/dist/workflow/ConfigurableWorkflow.d.ts +1 -2
  152. package/dist/workflow/ConfigurableWorkflow.js +1 -2
  153. package/dist/workflow/HookSystem.d.ts +1 -2
  154. package/dist/workflow/HookSystem.js +1 -2
  155. package/dist/workflow/IndexRegenerator.d.ts +1 -2
  156. package/dist/workflow/IndexRegenerator.js +1 -2
  157. package/dist/workflow/PluginWorkflowComposer.d.ts +0 -1
  158. package/dist/workflow/PluginWorkflowComposer.js +0 -1
  159. package/dist/workflow/SkillUpdateEngine.d.ts +1 -2
  160. package/dist/workflow/SkillUpdateEngine.js +1 -2
  161. package/dist/workflow/VerificationSystem.d.ts +1 -2
  162. package/dist/workflow/VerificationSystem.js +1 -2
  163. package/dist/workflow/WorkflowEngine.d.ts +1 -2
  164. package/dist/workflow/WorkflowEngine.js +1 -2
  165. package/dist/workflow/index.d.ts +0 -1
  166. package/dist/workflow/index.js +0 -1
  167. package/package.json +13 -8
  168. package/skill.yaml +2 -2
@@ -1,8 +1,14 @@
1
1
  #!/bin/sh
2
2
 
3
- if [ ! -f "build-index-auto.js" ]; then
4
- echo "[ospec] build-index-auto.js not found, skip hook check"
3
+ if [ -f ".ospec/tools/build-index-auto.cjs" ]; then
4
+ OSPEC_BUILD_INDEX_SCRIPT=".ospec/tools/build-index-auto.cjs"
5
+ elif [ -f "build-index-auto.cjs" ]; then
6
+ OSPEC_BUILD_INDEX_SCRIPT="build-index-auto.cjs"
7
+ elif [ -f "build-index-auto.js" ]; then
8
+ OSPEC_BUILD_INDEX_SCRIPT="build-index-auto.js"
9
+ else
10
+ echo "[ospec] .ospec/tools/build-index-auto.cjs not found, skip hook check"
5
11
  exit 0
6
12
  fi
7
13
 
8
- node build-index-auto.js hook-check post-merge
14
+ node "$OSPEC_BUILD_INDEX_SCRIPT" hook-check post-merge
@@ -1,8 +1,14 @@
1
1
  #!/bin/sh
2
2
 
3
- if [ ! -f "build-index-auto.js" ]; then
4
- echo "[ospec] build-index-auto.js not found, skip hook check"
3
+ if [ -f ".ospec/tools/build-index-auto.cjs" ]; then
4
+ OSPEC_BUILD_INDEX_SCRIPT=".ospec/tools/build-index-auto.cjs"
5
+ elif [ -f "build-index-auto.cjs" ]; then
6
+ OSPEC_BUILD_INDEX_SCRIPT="build-index-auto.cjs"
7
+ elif [ -f "build-index-auto.js" ]; then
8
+ OSPEC_BUILD_INDEX_SCRIPT="build-index-auto.js"
9
+ else
10
+ echo "[ospec] .ospec/tools/build-index-auto.cjs not found, skip hook check"
5
11
  exit 0
6
12
  fi
7
13
 
8
- node build-index-auto.js hook-check pre-commit
14
+ node "$OSPEC_BUILD_INDEX_SCRIPT" hook-check pre-commit
package/README.md CHANGED
@@ -21,7 +21,9 @@
21
21
  <a href="docs/README.ar.md">العربية</a>
22
22
  </p>
23
23
 
24
- OSpec is a document-driven workflow for AI-assisted development, helping you define requirements and changes in docs first, then drive implementation, validation, and archive through AI collaboration.
24
+ The official OSpec CLI package is `@clawplays/ospec-cli`, and the official command is `ospec`. OSpec supports spec-driven development (SDD) and document-driven development for AI coding agents and CLI workflows.
25
+
26
+ OSpec.ai is the official project site. `OSpec`, `ospec`, `ospec.ai`, `ospec ai`, `ospecai`, and `ospec-ai` all point to the same official project and CLI.
25
27
 
26
28
  <p align="center">
27
29
  <a href="docs/prompt-guide.md">Prompt Guide</a> |
@@ -46,6 +48,10 @@ AI coding assistants are powerful, but requirements that live only in chat histo
46
48
  npm install -g @clawplays/ospec-cli
47
49
  ```
48
50
 
51
+ Official package: `@clawplays/ospec-cli`
52
+ Command: `ospec`
53
+ Verify install: `ospec --help`
54
+
49
55
  ## Quick Start
50
56
 
51
57
  OSpec only takes 3 steps:
@@ -160,6 +166,8 @@ For an existing OSpec project, after upgrading the CLI with npm, run this in the
160
166
  ospec update
161
167
  ```
162
168
 
169
+ `ospec update` also migrates legacy root-level `build-index-auto.cjs` / `build-index-auto.js` tooling into `.ospec/tools/build-index-auto.cjs` and refreshes OSpec-managed hook entrypoints to use the new location.
170
+
163
171
  ## How The OSpec Workflow Works
164
172
 
165
173
  ```text
package/SKILL.md CHANGED
@@ -53,7 +53,7 @@ Required checks after `ospec init`:
53
53
  - `changes/archived/`
54
54
  - `SKILL.md`
55
55
  - `SKILL.index.json`
56
- - `build-index-auto.cjs`
56
+ - `.ospec/tools/build-index-auto.cjs`
57
57
  - `for-ai/ai-guide.md`
58
58
  - `for-ai/execution-protocol.md`
59
59
  - `for-ai/naming-conventions.md`
@@ -1,11 +1,13 @@
1
1
  #!/bin/sh
2
2
 
3
- if [ -f "build-index-auto.cjs" ]; then
3
+ if [ -f ".ospec/tools/build-index-auto.cjs" ]; then
4
+ OSPEC_BUILD_INDEX_SCRIPT=".ospec/tools/build-index-auto.cjs"
5
+ elif [ -f "build-index-auto.cjs" ]; then
4
6
  OSPEC_BUILD_INDEX_SCRIPT="build-index-auto.cjs"
5
7
  elif [ -f "build-index-auto.js" ]; then
6
8
  OSPEC_BUILD_INDEX_SCRIPT="build-index-auto.js"
7
9
  else
8
- echo "[ospec] build-index-auto.cjs not found, skip hook check"
10
+ echo "[ospec] .ospec/tools/build-index-auto.cjs not found, skip hook check"
9
11
  exit 0
10
12
  fi
11
13
 
@@ -1,11 +1,13 @@
1
1
  #!/bin/sh
2
2
 
3
- if [ -f "build-index-auto.cjs" ]; then
3
+ if [ -f ".ospec/tools/build-index-auto.cjs" ]; then
4
+ OSPEC_BUILD_INDEX_SCRIPT=".ospec/tools/build-index-auto.cjs"
5
+ elif [ -f "build-index-auto.cjs" ]; then
4
6
  OSPEC_BUILD_INDEX_SCRIPT="build-index-auto.cjs"
5
7
  elif [ -f "build-index-auto.js" ]; then
6
8
  OSPEC_BUILD_INDEX_SCRIPT="build-index-auto.js"
7
9
  else
8
- echo "[ospec] build-index-auto.cjs not found, skip hook check"
10
+ echo "[ospec] .ospec/tools/build-index-auto.cjs not found, skip hook check"
9
11
  exit 0
10
12
  fi
11
13
 
@@ -32,5 +32,4 @@ export declare class BatchOperations {
32
32
  }>;
33
33
  private matchesQuery;
34
34
  }
35
- export declare const batchOperations: BatchOperations;
36
- //# sourceMappingURL=BatchOperations.d.ts.map
35
+ export declare const batchOperations: BatchOperations;
@@ -155,5 +155,4 @@ class BatchOperations {
155
155
  }
156
156
  }
157
157
  exports.BatchOperations = BatchOperations;
158
- exports.batchOperations = new BatchOperations();
159
- //# sourceMappingURL=BatchOperations.js.map
158
+ exports.batchOperations = new BatchOperations();
@@ -62,5 +62,4 @@ export declare class CachingLayer<T = any> {
62
62
  */
63
63
  destroy(): void;
64
64
  }
65
- export declare const cachingLayer: CachingLayer<any>;
66
- //# sourceMappingURL=CachingLayer.d.ts.map
65
+ export declare const cachingLayer: CachingLayer<any>;
@@ -132,5 +132,4 @@ class CachingLayer {
132
132
  }
133
133
  }
134
134
  exports.CachingLayer = CachingLayer;
135
- exports.cachingLayer = new CachingLayer();
136
- //# sourceMappingURL=CachingLayer.js.map
135
+ exports.cachingLayer = new CachingLayer();
@@ -42,5 +42,4 @@ export declare class FeatureUpdater {
42
42
  */
43
43
  clearLogs(): void;
44
44
  }
45
- export declare const featureUpdater: FeatureUpdater;
46
- //# sourceMappingURL=FeatureUpdater.d.ts.map
45
+ export declare const featureUpdater: FeatureUpdater;
@@ -147,5 +147,4 @@ class FeatureUpdater {
147
147
  }
148
148
  }
149
149
  exports.FeatureUpdater = FeatureUpdater;
150
- exports.featureUpdater = new FeatureUpdater();
151
- //# sourceMappingURL=FeatureUpdater.js.map
150
+ exports.featureUpdater = new FeatureUpdater();
@@ -48,5 +48,4 @@ export declare class PerformanceMonitor {
48
48
  */
49
49
  generateReport(): string;
50
50
  }
51
- export declare const performanceMonitor: PerformanceMonitor;
52
- //# sourceMappingURL=PerformanceMonitor.d.ts.map
51
+ export declare const performanceMonitor: PerformanceMonitor;
@@ -125,5 +125,4 @@ class PerformanceMonitor {
125
125
  }
126
126
  }
127
127
  exports.PerformanceMonitor = PerformanceMonitor;
128
- exports.performanceMonitor = new PerformanceMonitor();
129
- //# sourceMappingURL=PerformanceMonitor.js.map
128
+ exports.performanceMonitor = new PerformanceMonitor();
@@ -57,5 +57,4 @@ export declare class StatePersistence {
57
57
  memory: string;
58
58
  };
59
59
  }
60
- export declare const statePersistence: StatePersistence;
61
- //# sourceMappingURL=StatePersistence.d.ts.map
60
+ export declare const statePersistence: StatePersistence;
@@ -164,5 +164,4 @@ class StatePersistence {
164
164
  }
165
165
  }
166
166
  exports.StatePersistence = StatePersistence;
167
- exports.statePersistence = new StatePersistence();
168
- //# sourceMappingURL=StatePersistence.js.map
167
+ exports.statePersistence = new StatePersistence();
@@ -10,5 +10,4 @@ export type { BatchOperationResult, BatchQuery } from './BatchOperations';
10
10
  export { PerformanceMonitor, performanceMonitor } from './PerformanceMonitor';
11
11
  export type { PerformanceMetric, PerformanceSummary } from './PerformanceMonitor';
12
12
  export { CachingLayer, cachingLayer } from './CachingLayer';
13
- export type { CacheEntry } from './CachingLayer';
14
- //# sourceMappingURL=index.d.ts.map
13
+ export type { CacheEntry } from './CachingLayer';
@@ -18,5 +18,4 @@ Object.defineProperty(exports, "PerformanceMonitor", { enumerable: true, get: fu
18
18
  Object.defineProperty(exports, "performanceMonitor", { enumerable: true, get: function () { return PerformanceMonitor_1.performanceMonitor; } });
19
19
  var CachingLayer_1 = require("./CachingLayer");
20
20
  Object.defineProperty(exports, "CachingLayer", { enumerable: true, get: function () { return CachingLayer_1.CachingLayer; } });
21
- Object.defineProperty(exports, "cachingLayer", { enumerable: true, get: function () { return CachingLayer_1.cachingLayer; } });
22
- //# sourceMappingURL=index.js.map
21
+ Object.defineProperty(exports, "cachingLayer", { enumerable: true, get: function () { return CachingLayer_1.cachingLayer; } });
@@ -1,5 +1,4 @@
1
1
  /**
2
2
  * Config 命令
3
3
  * TODO: 实现 config 命令
4
- */
5
- //# sourceMappingURL=config.d.ts.map
4
+ */
@@ -2,5 +2,4 @@
2
2
  /**
3
3
  * Config 命令
4
4
  * TODO: 实现 config 命令
5
- */
6
- //# sourceMappingURL=config.js.map
5
+ */
@@ -1,5 +1,4 @@
1
1
  /**
2
2
  * Feature 命令组
3
3
  * TODO: 实现 feature 相关命令
4
- */
5
- //# sourceMappingURL=feature.d.ts.map
4
+ */
@@ -2,5 +2,4 @@
2
2
  /**
3
3
  * Feature 命令组
4
4
  * TODO: 实现 feature 相关命令
5
- */
6
- //# sourceMappingURL=feature.js.map
5
+ */
@@ -1,5 +1,4 @@
1
1
  /**
2
2
  * Index 命令组
3
3
  * TODO: 实现 index 相关命令
4
- */
5
- //# sourceMappingURL=index.d.ts.map
4
+ */
@@ -2,5 +2,4 @@
2
2
  /**
3
3
  * Index 命令组
4
4
  * TODO: 实现 index 相关命令
5
- */
6
- //# sourceMappingURL=index.js.map
5
+ */
@@ -1,5 +1,4 @@
1
1
  /**
2
2
  * Project 命令组
3
3
  * TODO: 实现 project 相关命令
4
- */
5
- //# sourceMappingURL=project.d.ts.map
4
+ */
@@ -2,5 +2,4 @@
2
2
  /**
3
3
  * Project 命令组
4
4
  * TODO: 实现 project 相关命令
5
- */
6
- //# sourceMappingURL=project.js.map
5
+ */
@@ -1,5 +1,4 @@
1
1
  /**
2
2
  * Validate 命令
3
3
  * TODO: 实现 validate 命令
4
- */
5
- //# sourceMappingURL=validate.d.ts.map
4
+ */
@@ -2,5 +2,4 @@
2
2
  /**
3
3
  * Validate 命令
4
4
  * TODO: 实现 validate 命令
5
- */
6
- //# sourceMappingURL=validate.js.map
5
+ */
@@ -1,5 +1,4 @@
1
1
  /**
2
2
  * CLI 命令入口
3
3
  * TODO: 实现具体命令
4
- */
5
- //# sourceMappingURL=index.d.ts.map
4
+ */
package/dist/cli/index.js CHANGED
@@ -2,5 +2,4 @@
2
2
  /**
3
3
  * CLI 命令入口
4
4
  * TODO: 实现具体命令
5
- */
6
- //# sourceMappingURL=index.js.map
5
+ */
package/dist/cli.d.ts CHANGED
@@ -1,3 +1,2 @@
1
1
  #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=cli.d.ts.map
2
+ export {};
package/dist/cli.js CHANGED
@@ -224,7 +224,7 @@ const services_1 = require("./services");
224
224
 
225
225
 
226
226
 
227
- const CLI_VERSION = '0.3.8';
227
+ const CLI_VERSION = '0.3.10';
228
228
 
229
229
  function showInitUsage() {
230
230
  console.log('Usage: ospec init [root-dir] [--summary "..."] [--tech-stack node,react] [--architecture "..."] [--document-language en-US|zh-CN|ja-JP|ar]');
@@ -1100,4 +1100,3 @@ main().catch(error => {
1100
1100
 
1101
1101
 
1102
1102
 
1103
- //# sourceMappingURL=cli.js.map
@@ -10,5 +10,4 @@ export declare class ArchiveCommand extends BaseCommand {
10
10
  private resolveArchiveDirName;
11
11
  private toRelativePath;
12
12
  }
13
- export {};
14
- //# sourceMappingURL=ArchiveCommand.d.ts.map
13
+ export {};
@@ -268,4 +268,3 @@ class ArchiveCommand extends BaseCommand_1.BaseCommand {
268
268
  }
269
269
  }
270
270
  exports.ArchiveCommand = ArchiveCommand;
271
- //# sourceMappingURL=ArchiveCommand.js.map
@@ -29,5 +29,4 @@ export declare abstract class BaseCommand {
29
29
  * 打印警告信息
30
30
  */
31
31
  protected warn(message: string): void;
32
- }
33
- //# sourceMappingURL=BaseCommand.d.ts.map
32
+ }
@@ -42,5 +42,4 @@ class BaseCommand {
42
42
  console.warn(`⚠ ${message}`);
43
43
  }
44
44
  }
45
- exports.BaseCommand = BaseCommand;
46
- //# sourceMappingURL=BaseCommand.js.map
45
+ exports.BaseCommand = BaseCommand;
@@ -1,5 +1,4 @@
1
1
  import { BaseCommand } from './BaseCommand';
2
2
  export declare class BatchCommand extends BaseCommand {
3
3
  execute(action: string, projectPath?: string): Promise<void>;
4
- }
5
- //# sourceMappingURL=BatchCommand.d.ts.map
4
+ }
@@ -38,5 +38,4 @@ class BatchCommand extends BaseCommand_1.BaseCommand {
38
38
  }
39
39
  }
40
40
  }
41
- exports.BatchCommand = BatchCommand;
42
- //# sourceMappingURL=BatchCommand.js.map
41
+ exports.BatchCommand = BatchCommand;
@@ -71,4 +71,3 @@ class ChangesCommand extends BaseCommand_1.BaseCommand {
71
71
  }
72
72
  }
73
73
  exports.ChangesCommand = ChangesCommand;
74
- //# sourceMappingURL=ChangesCommand.js.map
@@ -1,5 +1,4 @@
1
1
  import { BaseCommand } from './BaseCommand';
2
2
  export declare class DocsCommand extends BaseCommand {
3
3
  execute(action?: string, projectPath?: string): Promise<void>;
4
- }
5
- //# sourceMappingURL=DocsCommand.d.ts.map
4
+ }
@@ -116,4 +116,3 @@ class DocsCommand extends BaseCommand_1.BaseCommand {
116
116
  }
117
117
  }
118
118
  exports.DocsCommand = DocsCommand;
119
- //# sourceMappingURL=DocsCommand.js.map
@@ -1,5 +1,4 @@
1
1
  import { BaseCommand } from './BaseCommand';
2
2
  export declare class IndexCommand extends BaseCommand {
3
3
  execute(action?: string, projectPath?: string): Promise<void>;
4
- }
5
- //# sourceMappingURL=IndexCommand.d.ts.map
4
+ }
@@ -53,5 +53,4 @@ class IndexCommand extends BaseCommand_1.BaseCommand {
53
53
  }
54
54
  }
55
55
  }
56
- exports.IndexCommand = IndexCommand;
57
- //# sourceMappingURL=IndexCommand.js.map
56
+ exports.IndexCommand = IndexCommand;
@@ -1,5 +1,4 @@
1
1
  import { BaseCommand } from './BaseCommand';
2
2
  export declare class InitCommand extends BaseCommand {
3
3
  execute(rootDir?: string): Promise<void>;
4
- }
5
- //# sourceMappingURL=InitCommand.d.ts.map
4
+ }
@@ -121,4 +121,3 @@ class InitCommand extends BaseCommand_1.BaseCommand {
121
121
  }
122
122
  }
123
123
  exports.InitCommand = InitCommand;
124
- //# sourceMappingURL=InitCommand.js.map
@@ -8,4 +8,3 @@ export declare class NewCommand extends BaseCommand {
8
8
  execute(featureName: string, rootDir?: string, options?: NewCommandOptions): Promise<void>;
9
9
  private normalizeFlags;
10
10
  }
11
- //# sourceMappingURL=NewCommand.d.ts.map
@@ -318,4 +318,3 @@ class NewCommand extends BaseCommand_1.BaseCommand {
318
318
  }
319
319
  }
320
320
  exports.NewCommand = NewCommand;
321
- //# sourceMappingURL=NewCommand.js.map
@@ -55,4 +55,3 @@ export declare class PluginsCommand extends BaseCommand {
55
55
  private isBuiltInCheckpointRunner;
56
56
  private getPluginEntries;
57
57
  }
58
- //# sourceMappingURL=PluginsCommand.d.ts.map
@@ -2489,4 +2489,3 @@ class PluginsCommand extends BaseCommand_1.BaseCommand {
2489
2489
  }
2490
2490
  }
2491
2491
  exports.PluginsCommand = PluginsCommand;
2492
- //# sourceMappingURL=PluginsCommand.js.map
@@ -1,5 +1,4 @@
1
1
  import { BaseCommand } from './BaseCommand';
2
2
  export declare class ProgressCommand extends BaseCommand {
3
3
  execute(featurePath?: string): Promise<void>;
4
- }
5
- //# sourceMappingURL=ProgressCommand.d.ts.map
4
+ }
@@ -99,5 +99,4 @@ class ProgressCommand extends BaseCommand_1.BaseCommand {
99
99
  }
100
100
  }
101
101
  }
102
- exports.ProgressCommand = ProgressCommand;
103
- //# sourceMappingURL=ProgressCommand.js.map
102
+ exports.ProgressCommand = ProgressCommand;
@@ -7,4 +7,3 @@ export declare class QueueCommand extends BaseCommand {
7
7
  private activateNext;
8
8
  private parseAddArgs;
9
9
  }
10
- //# sourceMappingURL=QueueCommand.d.ts.map
@@ -144,4 +144,3 @@ class QueueCommand extends BaseCommand_1.BaseCommand {
144
144
  }
145
145
  }
146
146
  exports.QueueCommand = QueueCommand;
147
- //# sourceMappingURL=QueueCommand.js.map
@@ -10,4 +10,3 @@ export declare class RunCommand extends BaseCommand {
10
10
  private printReport;
11
11
  private parseStartArgs;
12
12
  }
13
- //# sourceMappingURL=RunCommand.d.ts.map
@@ -197,4 +197,3 @@ class RunCommand extends BaseCommand_1.BaseCommand {
197
197
  }
198
198
  }
199
199
  exports.RunCommand = RunCommand;
200
- //# sourceMappingURL=RunCommand.js.map
@@ -28,4 +28,3 @@ export declare class SkillCommand extends BaseCommand {
28
28
  private resolveTargetDir;
29
29
  private resolveProviderHome;
30
30
  }
31
- //# sourceMappingURL=SkillCommand.d.ts.map
@@ -50,7 +50,7 @@ Use this action when the user intent is initialization.
50
50
 
51
51
  - use \`ospec init [path]\` so the repository ends in change-ready state
52
52
 
53
- - verify \`.skillrc\`, \`.ospec/\`, \`changes/\`, \`SKILL.md\`, \`SKILL.index.json\`, \`build-index-auto.cjs\`, \`for-ai/\`, and \`docs/project/\` files on disk
53
+ - verify \`.skillrc\`, \`.ospec/\`, \`changes/\`, \`SKILL.md\`, \`SKILL.index.json\`, \`.ospec/tools/build-index-auto.cjs\`, \`for-ai/\`, and \`docs/project/\` files on disk
54
54
 
55
55
  - if project overview context is missing and AI can ask follow-up questions, ask for a brief summary or tech stack before initialization; if the user declines, fall back to placeholder docs
56
56
 
@@ -1237,4 +1237,3 @@ interface:
1237
1237
 
1238
1238
  exports.SkillCommand = SkillCommand;
1239
1239
 
1240
- //# sourceMappingURL=SkillCommand.js.map
@@ -1,5 +1,4 @@
1
1
  import { BaseCommand } from './BaseCommand';
2
2
  export declare class SkillsCommand extends BaseCommand {
3
3
  execute(action?: string, projectPath?: string): Promise<void>;
4
- }
5
- //# sourceMappingURL=SkillsCommand.d.ts.map
4
+ }
@@ -64,5 +64,4 @@ class SkillsCommand extends BaseCommand_1.BaseCommand {
64
64
  }
65
65
  }
66
66
  }
67
- exports.SkillsCommand = SkillsCommand;
68
- //# sourceMappingURL=SkillsCommand.js.map
67
+ exports.SkillsCommand = SkillsCommand;
@@ -2,5 +2,4 @@ import { BaseCommand } from './BaseCommand';
2
2
  export declare class StatusCommand extends BaseCommand {
3
3
  execute(projectPath?: string): Promise<void>;
4
4
  private getRecommendedNextSteps;
5
- }
6
- //# sourceMappingURL=StatusCommand.d.ts.map
5
+ }
@@ -170,4 +170,3 @@ class StatusCommand extends BaseCommand_1.BaseCommand {
170
170
  }
171
171
  }
172
172
  exports.StatusCommand = StatusCommand;
173
- //# sourceMappingURL=StatusCommand.js.map
@@ -5,4 +5,3 @@ export declare class UpdateCommand extends BaseCommand {
5
5
  private syncInstalledSkills;
6
6
  private shouldSyncClaudeSkills;
7
7
  }
8
- //# sourceMappingURL=UpdateCommand.d.ts.map
@@ -36,6 +36,15 @@ class UpdateCommand extends BaseCommand_1.BaseCommand {
36
36
  if (toolingResult.hookInstalledFiles.length > 0) {
37
37
  this.info(` git hooks refreshed: ${toolingResult.hookInstalledFiles.join(', ')}`);
38
38
  }
39
+ if (toolingResult.migratedFiles.length > 0) {
40
+ this.info(` tooling migrated: ${toolingResult.migratedFiles.join(', ')}`);
41
+ }
42
+ if (toolingResult.removedLegacyFiles.length > 0) {
43
+ this.info(` legacy tooling removed: ${toolingResult.removedLegacyFiles.join(', ')}`);
44
+ }
45
+ if (toolingResult.migratedFiles.length > 0 || toolingResult.removedLegacyFiles.length > 0) {
46
+ this.info(' note: update any custom repo references from root build-index-auto.* to "ospec index build" or "node .ospec/tools/build-index-auto.cjs"');
47
+ }
39
48
  this.info(` codex skills: ${this.formatManagedSkills(skillResult.codex)}`);
40
49
  if (skillResult.claude.length > 0) {
41
50
  this.info(` claude skills: ${this.formatManagedSkills(skillResult.claude)}`);
@@ -56,8 +65,9 @@ class UpdateCommand extends BaseCommand_1.BaseCommand {
56
65
  this.info(' note: it does not enable, disable, or migrate active or queued changes automatically');
57
66
  }
58
67
  async syncProjectTooling(rootDir, documentLanguage) {
68
+ const migrationResult = await this.migrateLegacyBuildIndexScript(rootDir);
59
69
  const toolingPaths = [
60
- 'build-index-auto.cjs',
70
+ '.ospec/tools/build-index-auto.cjs',
61
71
  '.ospec/templates/hooks/pre-commit',
62
72
  '.ospec/templates/hooks/post-merge',
63
73
  ];
@@ -71,6 +81,32 @@ class UpdateCommand extends BaseCommand_1.BaseCommand {
71
81
  refreshedFiles: [...directCopyResult.refreshed],
72
82
  skippedFiles: [...directCopyResult.skipped],
73
83
  hookInstalledFiles: [...hookInstallResult.installed],
84
+ migratedFiles: migrationResult.migratedFiles,
85
+ removedLegacyFiles: migrationResult.removedLegacyFiles,
86
+ };
87
+ }
88
+ async migrateLegacyBuildIndexScript(rootDir) {
89
+ const targetRelativePath = '.ospec/tools/build-index-auto.cjs';
90
+ const targetPath = (0, path_1.join)(rootDir, ...targetRelativePath.split('/'));
91
+ const legacyRelativePaths = ['build-index-auto.cjs', 'build-index-auto.js'];
92
+ const migratedFiles = [];
93
+ const removedLegacyFiles = [];
94
+ for (const legacyRelativePath of legacyRelativePaths) {
95
+ const legacyPath = (0, path_1.join)(rootDir, legacyRelativePath);
96
+ if (!(await services_1.services.fileService.exists(legacyPath))) {
97
+ continue;
98
+ }
99
+ if (!(await services_1.services.fileService.exists(targetPath))) {
100
+ await services_1.services.fileService.move(legacyPath, targetPath);
101
+ migratedFiles.push(`${legacyRelativePath} -> ${targetRelativePath}`);
102
+ continue;
103
+ }
104
+ await services_1.services.fileService.remove(legacyPath);
105
+ removedLegacyFiles.push(legacyRelativePath);
106
+ }
107
+ return {
108
+ migratedFiles,
109
+ removedLegacyFiles,
74
110
  };
75
111
  }
76
112
  async syncEnabledPluginAssets(rootDir) {
@@ -368,4 +404,3 @@ class UpdateCommand extends BaseCommand_1.BaseCommand {
368
404
  }
369
405
  }
370
406
  exports.UpdateCommand = UpdateCommand;
371
- //# sourceMappingURL=UpdateCommand.js.map
@@ -1,5 +1,4 @@
1
1
  import { BaseCommand } from './BaseCommand';
2
2
  export declare class VerifyCommand extends BaseCommand {
3
3
  execute(featurePath?: string): Promise<void>;
4
- }
5
- //# sourceMappingURL=VerifyCommand.d.ts.map
4
+ }
@@ -239,4 +239,3 @@ class VerifyCommand extends BaseCommand_1.BaseCommand {
239
239
  }
240
240
  }
241
241
  exports.VerifyCommand = VerifyCommand;
242
- //# sourceMappingURL=VerifyCommand.js.map