specweave 1.0.32 → 1.0.34
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.
- package/.claude-plugin/marketplace.json +1 -1
- package/CLAUDE.md +384 -148
- package/README.md +0 -2
- package/bin/specweave.js +11 -0
- package/dist/src/cli/commands/init.js +1 -1
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/update-instructions.d.ts +16 -0
- package/dist/src/cli/commands/update-instructions.d.ts.map +1 -0
- package/dist/src/cli/commands/update-instructions.js +134 -0
- package/dist/src/cli/commands/update-instructions.js.map +1 -0
- package/dist/src/cli/helpers/init/directory-structure.d.ts +28 -1
- package/dist/src/cli/helpers/init/directory-structure.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/directory-structure.js +163 -33
- package/dist/src/cli/helpers/init/directory-structure.js.map +1 -1
- package/dist/src/cli/helpers/init/index.d.ts +2 -1
- package/dist/src/cli/helpers/init/index.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/index.js +3 -1
- package/dist/src/cli/helpers/init/index.js.map +1 -1
- package/dist/src/cli/helpers/init/initial-increment-generator.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/initial-increment-generator.js +12 -10
- package/dist/src/cli/helpers/init/initial-increment-generator.js.map +1 -1
- package/dist/src/cli/helpers/init/instruction-file-merger.d.ts +23 -0
- package/dist/src/cli/helpers/init/instruction-file-merger.d.ts.map +1 -0
- package/dist/src/cli/helpers/init/instruction-file-merger.js +243 -0
- package/dist/src/cli/helpers/init/instruction-file-merger.js.map +1 -0
- package/dist/src/cli/helpers/init/plugin-installer.js +49 -0
- package/dist/src/cli/helpers/init/plugin-installer.js.map +1 -1
- package/dist/src/config/types.d.ts +2 -2
- package/dist/src/core/living-docs/external-sync-orchestrator.d.ts +26 -0
- package/dist/src/core/living-docs/external-sync-orchestrator.d.ts.map +1 -1
- package/dist/src/core/living-docs/external-sync-orchestrator.js +61 -0
- package/dist/src/core/living-docs/external-sync-orchestrator.js.map +1 -1
- package/dist/src/core/living-docs/scaffolding/index.d.ts +12 -0
- package/dist/src/core/living-docs/scaffolding/index.d.ts.map +1 -0
- package/dist/src/core/living-docs/scaffolding/index.js +15 -0
- package/dist/src/core/living-docs/scaffolding/index.js.map +1 -0
- package/dist/src/core/living-docs/scaffolding/merger.d.ts +183 -0
- package/dist/src/core/living-docs/scaffolding/merger.d.ts.map +1 -0
- package/dist/src/core/living-docs/scaffolding/merger.js +523 -0
- package/dist/src/core/living-docs/scaffolding/merger.js.map +1 -0
- package/dist/src/core/living-docs/scaffolding/scaffold.d.ts +102 -0
- package/dist/src/core/living-docs/scaffolding/scaffold.d.ts.map +1 -0
- package/dist/src/core/living-docs/scaffolding/scaffold.js +346 -0
- package/dist/src/core/living-docs/scaffolding/scaffold.js.map +1 -0
- package/dist/src/core/living-docs/scaffolding/template-engine.d.ts +108 -0
- package/dist/src/core/living-docs/scaffolding/template-engine.d.ts.map +1 -0
- package/dist/src/core/living-docs/scaffolding/template-engine.js +204 -0
- package/dist/src/core/living-docs/scaffolding/template-engine.js.map +1 -0
- package/dist/src/core/living-docs/sync-helpers/generators.d.ts +38 -2
- package/dist/src/core/living-docs/sync-helpers/generators.d.ts.map +1 -1
- package/dist/src/core/living-docs/sync-helpers/generators.js +65 -10
- package/dist/src/core/living-docs/sync-helpers/generators.js.map +1 -1
- package/dist/src/core/living-docs/sync-helpers/index.d.ts +1 -1
- package/dist/src/core/living-docs/sync-helpers/index.d.ts.map +1 -1
- package/dist/src/core/living-docs/sync-helpers/index.js.map +1 -1
- package/dist/src/core/tools/index.d.ts +11 -0
- package/dist/src/core/tools/index.d.ts.map +1 -0
- package/dist/src/core/tools/index.js +10 -0
- package/dist/src/core/tools/index.js.map +1 -0
- package/dist/src/core/tools/tool-event-bus.d.ts +33 -0
- package/dist/src/core/tools/tool-event-bus.d.ts.map +1 -0
- package/dist/src/core/tools/tool-event-bus.js +84 -0
- package/dist/src/core/tools/tool-event-bus.js.map +1 -0
- package/dist/src/core/tools/tool-index-builder.d.ts +27 -0
- package/dist/src/core/tools/tool-index-builder.d.ts.map +1 -0
- package/dist/src/core/tools/tool-index-builder.js +289 -0
- package/dist/src/core/tools/tool-index-builder.js.map +1 -0
- package/dist/src/core/tools/tool-registry.d.ts +51 -0
- package/dist/src/core/tools/tool-registry.d.ts.map +1 -0
- package/dist/src/core/tools/tool-registry.js +224 -0
- package/dist/src/core/tools/tool-registry.js.map +1 -0
- package/dist/src/core/tools/tool-search-engine.d.ts +22 -0
- package/dist/src/core/tools/tool-search-engine.d.ts.map +1 -0
- package/dist/src/core/tools/tool-search-engine.js +174 -0
- package/dist/src/core/tools/tool-search-engine.js.map +1 -0
- package/dist/src/core/tools/types/tool-registry-types.d.ts +112 -0
- package/dist/src/core/tools/types/tool-registry-types.d.ts.map +1 -0
- package/dist/src/core/tools/types/tool-registry-types.js +7 -0
- package/dist/src/core/tools/types/tool-registry-types.js.map +1 -0
- package/dist/src/init/compliance/types.d.ts +1 -1
- package/package.json +1 -1
- package/plugins/specweave/hooks/hooks.json +3 -13
- package/plugins/specweave/hooks/lib/common-setup.sh +47 -321
- package/plugins/specweave/hooks/lib/migrate-increment-work.sh +5 -5
- package/plugins/specweave/hooks/lib/sync-spec-content.sh +5 -5
- package/plugins/specweave/hooks/universal/dispatcher.mjs +4 -5
- package/plugins/specweave/hooks/universal/fail-fast-wrapper.sh +43 -296
- package/plugins/specweave/hooks/universal/hook-wrapper.sh +3 -1
- package/plugins/specweave/hooks/user-prompt-submit.sh +1 -1
- package/plugins/specweave/hooks/v2/dispatchers/post-tool-use.sh +2 -2
- package/plugins/specweave/hooks/v2/dispatchers/session-start.sh +1 -10
- package/plugins/specweave/hooks/v2/guards/completion-guard.sh +12 -29
- package/plugins/specweave/hooks/v2/guards/increment-duplicate-guard.sh +27 -29
- package/plugins/specweave/hooks/v2/guards/metadata-json-guard.sh +10 -4
- package/plugins/specweave/hooks/v2/guards/spec-validation-guard.sh +139 -0
- package/plugins/specweave/hooks/v2/guards/task-ac-sync-guard.sh +4 -2
- package/plugins/specweave/hooks/v2/session-end.sh +3 -1
- package/plugins/specweave/hooks/v2/session-start.sh +3 -1
- package/plugins/specweave/skills/increment-planner/SKILL.md +75 -63
- package/plugins/specweave/skills/increment-planner/templates/plan.md +14 -0
- package/plugins/specweave/skills/update-instructions/SKILL.md +80 -0
- package/plugins/specweave-ado/hooks/post-living-docs-update.sh +1 -1
- package/plugins/specweave-mobile/README.md +55 -35
- package/plugins/specweave-mobile/agents/mobile-architect/AGENT.md +805 -329
- package/plugins/specweave-mobile/skills/expo-workflow/SKILL.md +226 -9
- package/plugins/specweave-mobile/skills/native-modules/SKILL.md +221 -20
- package/plugins/specweave-mobile/skills/performance-optimization/SKILL.md +186 -14
- package/plugins/specweave-mobile/skills/react-native-setup/SKILL.md +151 -54
- package/plugins/specweave-release/commands/npm.md +61 -17
- package/plugins/specweave-release/hooks/post-task-completion.sh +2 -3
- package/src/templates/AGENTS.md.template +34 -0
- package/src/templates/CLAUDE.md.template +121 -155
- package/plugins/specweave/hooks/config-env-separator.sh +0 -99
- package/plugins/specweave/hooks/github-metadata-guard.sh +0 -73
- package/plugins/specweave/hooks/lib/circuit-breaker.sh +0 -381
- package/plugins/specweave/hooks/lib/crash-prevention.sh +0 -336
- package/plugins/specweave/hooks/lib/logging.sh +0 -231
- package/plugins/specweave/hooks/lib/metrics.sh +0 -347
- package/plugins/specweave/hooks/lib/semaphore.sh +0 -216
- package/plugins/specweave/hooks/project-folder-guard.sh +0 -274
- package/plugins/specweave/hooks/spec-project-validator.sh +0 -210
- package/plugins/specweave/hooks/v2/guards/bash-file-guard.sh +0 -212
- package/plugins/specweave/hooks/v2/guards/bash-file-guard.test.sh +0 -163
- package/plugins/specweave/hooks/v2/guards/features-folder-guard.sh +0 -51
- package/plugins/specweave/hooks/v2/guards/increment-root-guard.sh +0 -63
- package/plugins/specweave/hooks/v2/guards/per-us-project-validator.sh +0 -335
- package/plugins/specweave/hooks/v2/guards/per-us-project-validator.test.sh +0 -406
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
import type { UserStoryData } from './types.js';
|
|
12
12
|
import type { USExternalRefsMap } from '../types/increment-metadata.js';
|
|
13
13
|
import { Logger } from '../../utils/logger.js';
|
|
14
|
+
import type { ToolRegistry, ToolSearchResult, LoadedTool } from '../tools/index.js';
|
|
14
15
|
/**
|
|
15
16
|
* Project mapping configuration
|
|
16
17
|
*/
|
|
@@ -70,9 +71,34 @@ export declare class ExternalSyncOrchestrator {
|
|
|
70
71
|
private projectRoot;
|
|
71
72
|
private logger;
|
|
72
73
|
private projectMappings;
|
|
74
|
+
private toolRegistry?;
|
|
73
75
|
constructor(projectRoot: string, options?: {
|
|
74
76
|
logger?: Logger;
|
|
77
|
+
toolRegistry?: ToolRegistry;
|
|
75
78
|
});
|
|
79
|
+
/**
|
|
80
|
+
* Set the tool registry for intelligent tool selection
|
|
81
|
+
*/
|
|
82
|
+
setToolRegistry(registry: ToolRegistry): void;
|
|
83
|
+
/**
|
|
84
|
+
* Search for best sync tool matching project configuration
|
|
85
|
+
*
|
|
86
|
+
* Uses Tool Search Registry to find the optimal sync tool based on
|
|
87
|
+
* project mapping (github, jira, ado).
|
|
88
|
+
*
|
|
89
|
+
* @param projectId - Project ID to find sync tool for
|
|
90
|
+
* @returns Best matching tool result or null
|
|
91
|
+
*/
|
|
92
|
+
findSyncTool(projectId: string): Promise<ToolSearchResult | null>;
|
|
93
|
+
/**
|
|
94
|
+
* Get loaded sync tool for a project
|
|
95
|
+
*
|
|
96
|
+
* Combines findSyncTool with lazy loading to get full tool content.
|
|
97
|
+
*
|
|
98
|
+
* @param projectId - Project ID
|
|
99
|
+
* @returns Loaded tool with content or null
|
|
100
|
+
*/
|
|
101
|
+
getLoadedSyncTool(projectId: string): Promise<LoadedTool | null>;
|
|
76
102
|
/**
|
|
77
103
|
* Load project mappings from config
|
|
78
104
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-sync-orchestrator.d.ts","sourceRoot":"","sources":["../../../../src/core/living-docs/external-sync-orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAiB,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACvF,OAAO,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"external-sync-orchestrator.d.ts","sourceRoot":"","sources":["../../../../src/core/living-docs/external-sync-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,67 @@ export class ExternalSyncOrchestrator {
|
|
|
19
19
|
this.projectMappings = {};
|
|
20
20
|
this.projectRoot = projectRoot;
|
|
21
21
|
this.logger = options.logger ?? consoleLogger;
|
|
22
|
+
this.toolRegistry = options.toolRegistry;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Set the tool registry for intelligent tool selection
|
|
26
|
+
*/
|
|
27
|
+
setToolRegistry(registry) {
|
|
28
|
+
this.toolRegistry = registry;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Search for best sync tool matching project configuration
|
|
32
|
+
*
|
|
33
|
+
* Uses Tool Search Registry to find the optimal sync tool based on
|
|
34
|
+
* project mapping (github, jira, ado).
|
|
35
|
+
*
|
|
36
|
+
* @param projectId - Project ID to find sync tool for
|
|
37
|
+
* @returns Best matching tool result or null
|
|
38
|
+
*/
|
|
39
|
+
async findSyncTool(projectId) {
|
|
40
|
+
if (!this.toolRegistry) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
const mapping = this.projectMappings[projectId];
|
|
44
|
+
if (!mapping) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
// Build query based on configured providers
|
|
48
|
+
const providers = [];
|
|
49
|
+
if (mapping.github)
|
|
50
|
+
providers.push('github');
|
|
51
|
+
if (mapping.jira)
|
|
52
|
+
providers.push('jira');
|
|
53
|
+
if (mapping.ado)
|
|
54
|
+
providers.push('azure devops', 'ado');
|
|
55
|
+
if (providers.length === 0) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
const query = `sync ${providers.join(' ')} issues`;
|
|
59
|
+
const result = await this.toolRegistry.findBestMatch(query);
|
|
60
|
+
if (result && result.score > 0.3) {
|
|
61
|
+
this.toolRegistry.recordToolSelection(result.tool.id, query, result.score, `project:${projectId}`);
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Get loaded sync tool for a project
|
|
68
|
+
*
|
|
69
|
+
* Combines findSyncTool with lazy loading to get full tool content.
|
|
70
|
+
*
|
|
71
|
+
* @param projectId - Project ID
|
|
72
|
+
* @returns Loaded tool with content or null
|
|
73
|
+
*/
|
|
74
|
+
async getLoadedSyncTool(projectId) {
|
|
75
|
+
if (!this.toolRegistry) {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
const result = await this.findSyncTool(projectId);
|
|
79
|
+
if (!result) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
return this.toolRegistry.getLoadedTool(result.tool.id);
|
|
22
83
|
}
|
|
23
84
|
/**
|
|
24
85
|
* Load project mappings from config
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-sync-orchestrator.js","sourceRoot":"","sources":["../../../../src/core/living-docs/external-sync-orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAIlC,OAAO,EAAU,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"external-sync-orchestrator.js","sourceRoot":"","sources":["../../../../src/core/living-docs/external-sync-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Living Docs Scaffolding Module
|
|
3
|
+
*
|
|
4
|
+
* Provides template engine, scaffolding, and merging functionality
|
|
5
|
+
* for creating living documentation structures in user projects.
|
|
6
|
+
*
|
|
7
|
+
* @module core/living-docs/scaffolding
|
|
8
|
+
*/
|
|
9
|
+
export { TemplateEngine, getTemplateEngine, renderTemplate, createDefaultContext, type TemplateContext, } from './template-engine.js';
|
|
10
|
+
export { LivingDocsScaffold, scaffoldLivingDocs, hasLivingDocsStructure, type ScaffoldOptions, type ScaffoldResult, } from './scaffold.js';
|
|
11
|
+
export { LivingDocsMerger, scanExistingDocs, findSimilarFolders, type DetectedDoc, type DocType, type MergeOptions, type MergeResult, type SimilarityResult, } from './merger.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/living-docs/scaffolding/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,KAAK,eAAe,GACrB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,gBAAgB,GACtB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Living Docs Scaffolding Module
|
|
3
|
+
*
|
|
4
|
+
* Provides template engine, scaffolding, and merging functionality
|
|
5
|
+
* for creating living documentation structures in user projects.
|
|
6
|
+
*
|
|
7
|
+
* @module core/living-docs/scaffolding
|
|
8
|
+
*/
|
|
9
|
+
// Template Engine
|
|
10
|
+
export { TemplateEngine, getTemplateEngine, renderTemplate, createDefaultContext, } from './template-engine.js';
|
|
11
|
+
// Scaffold
|
|
12
|
+
export { LivingDocsScaffold, scaffoldLivingDocs, hasLivingDocsStructure, } from './scaffold.js';
|
|
13
|
+
// Merger
|
|
14
|
+
export { LivingDocsMerger, scanExistingDocs, findSimilarFolders, } from './merger.js';
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/living-docs/scaffolding/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,kBAAkB;AAClB,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,oBAAoB,GAErB,MAAM,sBAAsB,CAAC;AAE9B,WAAW;AACX,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,GAGvB,MAAM,eAAe,CAAC;AAEvB,SAAS;AACT,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,GAMnB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Living Docs Merger - Intelligently merges existing documentation
|
|
3
|
+
*
|
|
4
|
+
* This module scans for existing documentation in a user project and
|
|
5
|
+
* offers to merge/import it into the living docs structure.
|
|
6
|
+
*
|
|
7
|
+
* Smart features:
|
|
8
|
+
* - Detects documentation type (README, API docs, guides, etc.)
|
|
9
|
+
* - Suggests appropriate target folders
|
|
10
|
+
* - Detects similar/duplicate content
|
|
11
|
+
* - Preserves original files (copies, doesn't move)
|
|
12
|
+
*
|
|
13
|
+
* @module core/living-docs/scaffolding/merger
|
|
14
|
+
*/
|
|
15
|
+
import { Logger } from '../../../utils/logger.js';
|
|
16
|
+
/**
|
|
17
|
+
* Detected documentation file
|
|
18
|
+
*/
|
|
19
|
+
export interface DetectedDoc {
|
|
20
|
+
/** Original file path (relative to project root) */
|
|
21
|
+
sourcePath: string;
|
|
22
|
+
/** Absolute path */
|
|
23
|
+
absolutePath: string;
|
|
24
|
+
/** File name */
|
|
25
|
+
fileName: string;
|
|
26
|
+
/** Detected document type */
|
|
27
|
+
type: DocType;
|
|
28
|
+
/** Confidence score (0-1) */
|
|
29
|
+
confidence: number;
|
|
30
|
+
/** Suggested target folder in living docs */
|
|
31
|
+
suggestedTarget: string;
|
|
32
|
+
/** File size in bytes */
|
|
33
|
+
size: number;
|
|
34
|
+
/** First 500 chars of content (for preview) */
|
|
35
|
+
preview: string;
|
|
36
|
+
/** Detected keywords/themes */
|
|
37
|
+
themes: string[];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Document types
|
|
41
|
+
*/
|
|
42
|
+
export type DocType = 'readme' | 'api' | 'guide' | 'architecture' | 'adr' | 'runbook' | 'contributing' | 'changelog' | 'spec' | 'other';
|
|
43
|
+
/**
|
|
44
|
+
* Merge options
|
|
45
|
+
*/
|
|
46
|
+
export interface MergeOptions {
|
|
47
|
+
/** Project root path */
|
|
48
|
+
projectPath: string;
|
|
49
|
+
/** Additional folders to scan (besides common locations) */
|
|
50
|
+
additionalFolders?: string[];
|
|
51
|
+
/** Whether to scan recursively */
|
|
52
|
+
recursive?: boolean;
|
|
53
|
+
/** Maximum depth for recursive scan */
|
|
54
|
+
maxDepth?: number;
|
|
55
|
+
/** Minimum confidence to include in results */
|
|
56
|
+
minConfidence?: number;
|
|
57
|
+
/** Logger instance */
|
|
58
|
+
logger?: Logger;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Merge result
|
|
62
|
+
*/
|
|
63
|
+
export interface MergeResult {
|
|
64
|
+
/** Detected documentation files */
|
|
65
|
+
detected: DetectedDoc[];
|
|
66
|
+
/** Files that were merged */
|
|
67
|
+
merged: string[];
|
|
68
|
+
/** Files that were skipped */
|
|
69
|
+
skipped: string[];
|
|
70
|
+
/** Any errors */
|
|
71
|
+
errors: string[];
|
|
72
|
+
/** Suggested merges (grouped by target folder) */
|
|
73
|
+
suggestions: Map<string, DetectedDoc[]>;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Similarity result
|
|
77
|
+
*/
|
|
78
|
+
export interface SimilarityResult {
|
|
79
|
+
/** Whether files are similar */
|
|
80
|
+
isSimilar: boolean;
|
|
81
|
+
/** Similarity score (0-1) */
|
|
82
|
+
score: number;
|
|
83
|
+
/** Reason for similarity */
|
|
84
|
+
reason?: string;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Living Docs Merger class
|
|
88
|
+
*/
|
|
89
|
+
export declare class LivingDocsMerger {
|
|
90
|
+
private projectPath;
|
|
91
|
+
private logger;
|
|
92
|
+
private recursive;
|
|
93
|
+
private maxDepth;
|
|
94
|
+
private minConfidence;
|
|
95
|
+
private additionalFolders;
|
|
96
|
+
constructor(options: MergeOptions);
|
|
97
|
+
/**
|
|
98
|
+
* Scan for existing documentation
|
|
99
|
+
*/
|
|
100
|
+
scan(): Promise<DetectedDoc[]>;
|
|
101
|
+
/**
|
|
102
|
+
* Scan a directory for markdown files
|
|
103
|
+
*/
|
|
104
|
+
private scanDirectory;
|
|
105
|
+
/**
|
|
106
|
+
* Check if directory should be skipped
|
|
107
|
+
*/
|
|
108
|
+
private shouldSkipDir;
|
|
109
|
+
/**
|
|
110
|
+
* Check if file is a documentation file
|
|
111
|
+
*/
|
|
112
|
+
private isDocFile;
|
|
113
|
+
/**
|
|
114
|
+
* Analyze a documentation file
|
|
115
|
+
*/
|
|
116
|
+
private analyzeFile;
|
|
117
|
+
/**
|
|
118
|
+
* Detect document type from filename and content
|
|
119
|
+
*/
|
|
120
|
+
private detectType;
|
|
121
|
+
/**
|
|
122
|
+
* Extract themes/keywords from content
|
|
123
|
+
*/
|
|
124
|
+
private extractThemes;
|
|
125
|
+
/**
|
|
126
|
+
* Check similarity between two files using TF-IDF weighted cosine similarity
|
|
127
|
+
*
|
|
128
|
+
* TF-IDF (Term Frequency-Inverse Document Frequency) weights terms by:
|
|
129
|
+
* - How often they appear in a document (TF - more = more important)
|
|
130
|
+
* - How rare they are across all documents (IDF - rarer = more distinctive)
|
|
131
|
+
*/
|
|
132
|
+
checkSimilarity(doc1: DetectedDoc, doc2: DetectedDoc): SimilarityResult;
|
|
133
|
+
/**
|
|
134
|
+
* Compute TF-IDF weighted cosine similarity between two texts
|
|
135
|
+
*
|
|
136
|
+
* This is a simplified but effective TF-IDF implementation:
|
|
137
|
+
* - TF: term frequency in document (normalized)
|
|
138
|
+
* - IDF: inverse document frequency (approximated using both documents as corpus)
|
|
139
|
+
*/
|
|
140
|
+
private computeTfIdfSimilarity;
|
|
141
|
+
/**
|
|
142
|
+
* Tokenize text into meaningful terms
|
|
143
|
+
* Filters out common stop words and short tokens
|
|
144
|
+
*/
|
|
145
|
+
private tokenize;
|
|
146
|
+
/**
|
|
147
|
+
* Compute normalized term frequency
|
|
148
|
+
*/
|
|
149
|
+
private computeTermFrequency;
|
|
150
|
+
/**
|
|
151
|
+
* Compute cosine similarity between two TF-IDF vectors
|
|
152
|
+
*/
|
|
153
|
+
private cosineSimilarity;
|
|
154
|
+
/**
|
|
155
|
+
* Compute filename similarity using normalized Levenshtein distance
|
|
156
|
+
*/
|
|
157
|
+
private computeFilenameSimilarity;
|
|
158
|
+
/**
|
|
159
|
+
* Compute Levenshtein edit distance between two strings
|
|
160
|
+
*/
|
|
161
|
+
private levenshteinDistance;
|
|
162
|
+
/**
|
|
163
|
+
* Generate merge suggestions grouped by target folder
|
|
164
|
+
*/
|
|
165
|
+
generateSuggestions(detected: DetectedDoc[]): Map<string, DetectedDoc[]>;
|
|
166
|
+
/**
|
|
167
|
+
* Merge a detected document into living docs
|
|
168
|
+
*/
|
|
169
|
+
mergeDoc(doc: DetectedDoc, targetFolder?: string): Promise<{
|
|
170
|
+
success: boolean;
|
|
171
|
+
targetPath: string;
|
|
172
|
+
error?: string;
|
|
173
|
+
}>;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Scan for existing documentation (convenience function)
|
|
177
|
+
*/
|
|
178
|
+
export declare function scanExistingDocs(options: MergeOptions): Promise<DetectedDoc[]>;
|
|
179
|
+
/**
|
|
180
|
+
* Find similar documentation folders
|
|
181
|
+
*/
|
|
182
|
+
export declare function findSimilarFolders(projectPath: string, existingDocs: DetectedDoc[]): Map<string, string[]>;
|
|
183
|
+
//# sourceMappingURL=merger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merger.d.ts","sourceRoot":"","sources":["../../../../../src/core/living-docs/scaffolding/merger.ts"],"names":[],"mappings":"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"}
|