homegraph 1.4.1 → 1.5.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.
- package/README.md +48 -11
- package/dist/bin/homegraph.js +295 -72
- package/dist/bin/homegraph.js.map +1 -1
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +32 -11
- package/dist/context/index.js.map +1 -1
- package/dist/db/index.d.ts +143 -1
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +293 -16
- package/dist/db/index.js.map +1 -1
- package/dist/db/queries.d.ts +43 -4
- package/dist/db/queries.d.ts.map +1 -1
- package/dist/db/queries.js +138 -14
- package/dist/db/queries.js.map +1 -1
- package/dist/db/sqlite-adapter.d.ts +24 -17
- package/dist/db/sqlite-adapter.d.ts.map +1 -1
- package/dist/db/sqlite-adapter.js +292 -36
- package/dist/db/sqlite-adapter.js.map +1 -1
- package/dist/db/wal-valve.d.ts +15 -2
- package/dist/db/wal-valve.d.ts.map +1 -1
- package/dist/db/wal-valve.js +88 -6
- package/dist/db/wal-valve.js.map +1 -1
- package/dist/extraction/arkts-batch-worker.js +3 -2
- package/dist/extraction/arkts-batch-worker.js.map +1 -1
- package/dist/extraction/default-ignore.d.ts +39 -0
- package/dist/extraction/default-ignore.d.ts.map +1 -0
- package/dist/extraction/default-ignore.js +221 -0
- package/dist/extraction/default-ignore.js.map +1 -0
- package/dist/extraction/index.d.ts +9 -10
- package/dist/extraction/index.d.ts.map +1 -1
- package/dist/extraction/index.js +227 -323
- package/dist/extraction/index.js.map +1 -1
- package/dist/extraction/languages/arkts.d.ts +90 -6
- package/dist/extraction/languages/arkts.d.ts.map +1 -1
- package/dist/extraction/languages/arkts.js +1579 -128
- package/dist/extraction/languages/arkts.js.map +1 -1
- package/dist/extraction/store-worker.d.ts +20 -0
- package/dist/extraction/store-worker.d.ts.map +1 -0
- package/dist/extraction/store-worker.js +102 -0
- package/dist/extraction/store-worker.js.map +1 -0
- package/dist/extraction/store-writer.d.ts +48 -0
- package/dist/extraction/store-writer.d.ts.map +1 -0
- package/dist/extraction/store-writer.js +167 -0
- package/dist/extraction/store-writer.js.map +1 -0
- package/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/dist/extraction/tree-sitter.js +47 -0
- package/dist/extraction/tree-sitter.js.map +1 -1
- package/dist/extraction/wasm-runtime-flags.d.ts +14 -4
- package/dist/extraction/wasm-runtime-flags.d.ts.map +1 -1
- package/dist/extraction/wasm-runtime-flags.js +55 -7
- package/dist/extraction/wasm-runtime-flags.js.map +1 -1
- package/dist/index.d.ts +16 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +135 -97
- package/dist/index.js.map +1 -1
- package/dist/mcp/query-worker.d.ts +2 -2
- package/dist/mcp/query-worker.js +2 -2
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +42 -26
- package/dist/mcp/tools.js.map +1 -1
- package/dist/resolution/callback-synthesizer.d.ts +52 -16
- package/dist/resolution/callback-synthesizer.d.ts.map +1 -1
- package/dist/resolution/callback-synthesizer.js +234 -180
- package/dist/resolution/callback-synthesizer.js.map +1 -1
- package/dist/resolution/cooperative-yield.d.ts +10 -2
- package/dist/resolution/cooperative-yield.d.ts.map +1 -1
- package/dist/resolution/cooperative-yield.js +6 -4
- package/dist/resolution/cooperative-yield.js.map +1 -1
- package/dist/resolution/frameworks/go.d.ts.map +1 -1
- package/dist/resolution/frameworks/go.js +29 -6
- package/dist/resolution/frameworks/go.js.map +1 -1
- package/dist/resolution/import-resolver.d.ts +2 -3
- package/dist/resolution/import-resolver.d.ts.map +1 -1
- package/dist/resolution/import-resolver.js +166 -7
- package/dist/resolution/import-resolver.js.map +1 -1
- package/dist/resolution/index.d.ts +87 -2
- package/dist/resolution/index.d.ts.map +1 -1
- package/dist/resolution/index.js +739 -131
- package/dist/resolution/index.js.map +1 -1
- package/dist/resolution/memory-budget.d.ts +48 -0
- package/dist/resolution/memory-budget.d.ts.map +1 -0
- package/dist/resolution/memory-budget.js +162 -0
- package/dist/resolution/memory-budget.js.map +1 -0
- package/dist/resolution/name-matcher.d.ts +12 -1
- package/dist/resolution/name-matcher.d.ts.map +1 -1
- package/dist/resolution/name-matcher.js +439 -97
- package/dist/resolution/name-matcher.js.map +1 -1
- package/dist/resolution/resolver-pool.d.ts +106 -0
- package/dist/resolution/resolver-pool.d.ts.map +1 -0
- package/dist/resolution/resolver-pool.js +344 -0
- package/dist/resolution/resolver-pool.js.map +1 -0
- package/dist/resolution/resolver-worker.d.ts +17 -0
- package/dist/resolution/resolver-worker.d.ts.map +1 -0
- package/dist/resolution/resolver-worker.js +141 -0
- package/dist/resolution/resolver-worker.js.map +1 -0
- package/dist/resolution/types.d.ts +3 -0
- package/dist/resolution/types.d.ts.map +1 -1
- package/dist/spec/build/diff-parser.d.ts +55 -0
- package/dist/spec/build/diff-parser.d.ts.map +1 -0
- package/dist/spec/build/diff-parser.js +205 -0
- package/dist/spec/build/diff-parser.js.map +1 -0
- package/dist/spec/build/git-scanner.d.ts +93 -0
- package/dist/spec/build/git-scanner.d.ts.map +1 -0
- package/dist/spec/build/git-scanner.js +254 -0
- package/dist/spec/build/git-scanner.js.map +1 -0
- package/dist/spec/build/pipeline.d.ts +54 -0
- package/dist/spec/build/pipeline.d.ts.map +1 -0
- package/dist/spec/build/pipeline.js +170 -0
- package/dist/spec/build/pipeline.js.map +1 -0
- package/dist/spec/build/scan.d.ts +48 -0
- package/dist/spec/build/scan.d.ts.map +1 -0
- package/dist/spec/build/scan.js +89 -0
- package/dist/spec/build/scan.js.map +1 -0
- package/dist/spec/build/scope-resolver.d.ts +50 -0
- package/dist/spec/build/scope-resolver.d.ts.map +1 -0
- package/dist/spec/build/scope-resolver.js +105 -0
- package/dist/spec/build/scope-resolver.js.map +1 -0
- package/dist/spec/build/spec-extractor.d.ts +74 -0
- package/dist/spec/build/spec-extractor.d.ts.map +1 -0
- package/dist/spec/build/spec-extractor.js +344 -0
- package/dist/spec/build/spec-extractor.js.map +1 -0
- package/dist/spec/config.d.ts +35 -1
- package/dist/spec/config.d.ts.map +1 -1
- package/dist/spec/config.js +30 -5
- package/dist/spec/config.js.map +1 -1
- package/dist/spec/db/fts.d.ts.map +1 -1
- package/dist/spec/db/fts.js +19 -50
- package/dist/spec/db/fts.js.map +1 -1
- package/dist/spec/db/index.d.ts +5 -3
- package/dist/spec/db/index.d.ts.map +1 -1
- package/dist/spec/db/index.js +16 -1
- package/dist/spec/db/index.js.map +1 -1
- package/dist/spec/db/persist.d.ts +45 -0
- package/dist/spec/db/persist.d.ts.map +1 -0
- package/dist/spec/db/persist.js +66 -0
- package/dist/spec/db/persist.js.map +1 -0
- package/dist/spec/db/relations.d.ts +80 -1
- package/dist/spec/db/relations.d.ts.map +1 -1
- package/dist/spec/db/relations.js +175 -4
- package/dist/spec/db/relations.js.map +1 -1
- package/dist/spec/db/schema.d.ts +4 -0
- package/dist/spec/db/schema.d.ts.map +1 -1
- package/dist/spec/db/schema.js +4 -0
- package/dist/spec/db/schema.js.map +1 -1
- package/dist/spec/db/schema.sql +5 -1
- package/dist/spec/db/spec-node.d.ts +5 -0
- package/dist/spec/db/spec-node.d.ts.map +1 -1
- package/dist/spec/db/spec-node.js +11 -5
- package/dist/spec/db/spec-node.js.map +1 -1
- package/dist/spec/db/sql-utils.d.ts +11 -0
- package/dist/spec/db/sql-utils.d.ts.map +1 -0
- package/dist/spec/db/sql-utils.js +19 -0
- package/dist/spec/db/sql-utils.js.map +1 -0
- package/dist/spec/evolve/cluster-context.d.ts +30 -0
- package/dist/spec/evolve/cluster-context.d.ts.map +1 -0
- package/dist/spec/evolve/cluster-context.js +78 -0
- package/dist/spec/evolve/cluster-context.js.map +1 -0
- package/dist/spec/evolve/commit-spec-analyzer.d.ts +51 -0
- package/dist/spec/evolve/commit-spec-analyzer.d.ts.map +1 -0
- package/dist/spec/evolve/commit-spec-analyzer.js +88 -0
- package/dist/spec/evolve/commit-spec-analyzer.js.map +1 -0
- package/dist/spec/evolve/commit-spec-persister.d.ts +53 -0
- package/dist/spec/evolve/commit-spec-persister.d.ts.map +1 -0
- package/dist/spec/evolve/commit-spec-persister.js +93 -0
- package/dist/spec/evolve/commit-spec-persister.js.map +1 -0
- package/dist/spec/evolve/impact-locator.d.ts +23 -7
- package/dist/spec/evolve/impact-locator.d.ts.map +1 -1
- package/dist/spec/evolve/impact-locator.js +58 -14
- package/dist/spec/evolve/impact-locator.js.map +1 -1
- package/dist/spec/evolve/pipeline.d.ts +62 -25
- package/dist/spec/evolve/pipeline.d.ts.map +1 -1
- package/dist/spec/evolve/pipeline.js +436 -457
- package/dist/spec/evolve/pipeline.js.map +1 -1
- package/dist/spec/evolve/spec-rewriter.d.ts +13 -13
- package/dist/spec/evolve/spec-rewriter.d.ts.map +1 -1
- package/dist/spec/evolve/spec-rewriter.js +45 -45
- package/dist/spec/evolve/spec-rewriter.js.map +1 -1
- package/dist/spec/git/commits.d.ts +85 -0
- package/dist/spec/git/commits.d.ts.map +1 -0
- package/dist/spec/git/commits.js +218 -0
- package/dist/spec/git/commits.js.map +1 -0
- package/dist/spec/git/exec.d.ts +13 -0
- package/dist/spec/git/exec.d.ts.map +1 -0
- package/dist/spec/git/exec.js +19 -0
- package/dist/spec/git/exec.js.map +1 -0
- package/dist/spec/git/index.d.ts +9 -0
- package/dist/spec/git/index.d.ts.map +1 -0
- package/dist/spec/git/index.js +22 -0
- package/dist/spec/git/index.js.map +1 -0
- package/dist/spec/git-utils.d.ts +8 -0
- package/dist/spec/git-utils.d.ts.map +1 -0
- package/dist/spec/git-utils.js +14 -0
- package/dist/spec/git-utils.js.map +1 -0
- package/dist/spec/graph/index.d.ts +8 -0
- package/dist/spec/graph/index.d.ts.map +1 -0
- package/dist/spec/graph/index.js +17 -0
- package/dist/spec/graph/index.js.map +1 -0
- package/dist/spec/graph/queries.d.ts +6 -35
- package/dist/spec/graph/queries.d.ts.map +1 -1
- package/dist/spec/graph/queries.js +71 -248
- package/dist/spec/graph/queries.js.map +1 -1
- package/dist/spec/llm/agent-client.d.ts +59 -0
- package/dist/spec/llm/agent-client.d.ts.map +1 -0
- package/dist/spec/llm/agent-client.js +213 -0
- package/dist/spec/llm/agent-client.js.map +1 -0
- package/dist/spec/llm/agents/claude-code.d.ts +32 -0
- package/dist/spec/llm/agents/claude-code.d.ts.map +1 -0
- package/dist/spec/llm/agents/claude-code.js +125 -0
- package/dist/spec/llm/agents/claude-code.js.map +1 -0
- package/dist/spec/llm/agents/codex.d.ts +32 -0
- package/dist/spec/llm/agents/codex.d.ts.map +1 -0
- package/dist/spec/llm/agents/codex.js +145 -0
- package/dist/spec/llm/agents/codex.js.map +1 -0
- package/dist/spec/llm/agents/detect-utils.d.ts +28 -0
- package/dist/spec/llm/agents/detect-utils.d.ts.map +1 -0
- package/dist/spec/llm/agents/detect-utils.js +91 -0
- package/dist/spec/llm/agents/detect-utils.js.map +1 -0
- package/dist/spec/llm/agents/deveco-code.d.ts +33 -0
- package/dist/spec/llm/agents/deveco-code.d.ts.map +1 -0
- package/dist/spec/llm/agents/deveco-code.js +165 -0
- package/dist/spec/llm/agents/deveco-code.js.map +1 -0
- package/dist/spec/llm/agents/index.d.ts +31 -0
- package/dist/spec/llm/agents/index.d.ts.map +1 -0
- package/dist/spec/llm/agents/index.js +65 -0
- package/dist/spec/llm/agents/index.js.map +1 -0
- package/dist/spec/llm/agents/types.d.ts +76 -0
- package/dist/spec/llm/agents/types.d.ts.map +1 -0
- package/dist/spec/llm/agents/types.js +15 -0
- package/dist/spec/llm/agents/types.js.map +1 -0
- package/dist/spec/llm/client.d.ts +31 -11
- package/dist/spec/llm/client.d.ts.map +1 -1
- package/dist/spec/llm/client.js +143 -81
- package/dist/spec/llm/client.js.map +1 -1
- package/dist/spec/llm/factory.d.ts +41 -0
- package/dist/spec/llm/factory.d.ts.map +1 -0
- package/dist/spec/llm/factory.js +80 -0
- package/dist/spec/llm/factory.js.map +1 -0
- package/dist/spec/llm/prompts.d.ts +24 -8
- package/dist/spec/llm/prompts.d.ts.map +1 -1
- package/dist/spec/llm/prompts.js +100 -50
- package/dist/spec/llm/prompts.js.map +1 -1
- package/dist/spec/llm/retry.d.ts +53 -0
- package/dist/spec/llm/retry.d.ts.map +1 -0
- package/dist/spec/llm/retry.js +153 -0
- package/dist/spec/llm/retry.js.map +1 -0
- package/dist/spec/mine/clusterer.d.ts +63 -0
- package/dist/spec/mine/clusterer.d.ts.map +1 -0
- package/dist/spec/mine/clusterer.js +904 -0
- package/dist/spec/mine/clusterer.js.map +1 -0
- package/dist/spec/mine/clustering/features.d.ts +38 -0
- package/dist/spec/mine/clustering/features.d.ts.map +1 -0
- package/dist/spec/mine/clustering/features.js +108 -0
- package/dist/spec/mine/clustering/features.js.map +1 -0
- package/dist/spec/mine/clustering/index.d.ts +62 -0
- package/dist/spec/mine/clustering/index.d.ts.map +1 -0
- package/dist/spec/mine/clustering/index.js +259 -0
- package/dist/spec/mine/clustering/index.js.map +1 -0
- package/dist/spec/mine/clustering/leiden.d.ts +61 -0
- package/dist/spec/mine/clustering/leiden.d.ts.map +1 -0
- package/dist/spec/mine/clustering/leiden.js +489 -0
- package/dist/spec/mine/clustering/leiden.js.map +1 -0
- package/dist/spec/mine/clustering/text-similarity.d.ts +22 -0
- package/dist/spec/mine/clustering/text-similarity.d.ts.map +1 -0
- package/dist/spec/mine/clustering/text-similarity.js +98 -0
- package/dist/spec/mine/clustering/text-similarity.js.map +1 -0
- package/dist/spec/mine/generator.d.ts +54 -0
- package/dist/spec/mine/generator.d.ts.map +1 -0
- package/dist/spec/mine/generator.js +267 -0
- package/dist/spec/mine/generator.js.map +1 -0
- package/dist/spec/mine/persist.d.ts +37 -0
- package/dist/spec/mine/persist.d.ts.map +1 -0
- package/dist/spec/mine/persist.js +170 -0
- package/dist/spec/mine/persist.js.map +1 -0
- package/dist/spec/mine/pipeline.d.ts +41 -0
- package/dist/spec/mine/pipeline.d.ts.map +1 -0
- package/dist/spec/mine/pipeline.js +236 -0
- package/dist/spec/mine/pipeline.js.map +1 -0
- package/dist/spec/mine/progress-handler.d.ts +22 -0
- package/dist/spec/mine/progress-handler.d.ts.map +1 -0
- package/dist/spec/mine/progress-handler.js +108 -0
- package/dist/spec/mine/progress-handler.js.map +1 -0
- package/dist/spec/mine/progress.d.ts +23 -0
- package/dist/spec/mine/progress.d.ts.map +1 -0
- package/dist/spec/mine/progress.js +12 -0
- package/dist/spec/mine/progress.js.map +1 -0
- package/dist/spec/mine/scanner.d.ts +59 -0
- package/dist/spec/mine/scanner.d.ts.map +1 -0
- package/dist/spec/mine/scanner.js +383 -0
- package/dist/spec/mine/scanner.js.map +1 -0
- package/dist/spec/types.d.ts +32 -0
- package/dist/spec/types.d.ts.map +1 -1
- package/dist/spec/ui/index.d.ts +9 -0
- package/dist/spec/ui/index.d.ts.map +1 -0
- package/dist/spec/ui/index.js +16 -0
- package/dist/spec/ui/index.js.map +1 -0
- package/dist/spec/ui/progress-handler.d.ts +33 -0
- package/dist/spec/ui/progress-handler.d.ts.map +1 -0
- package/dist/spec/ui/progress-handler.js +132 -0
- package/dist/spec/ui/progress-handler.js.map +1 -0
- package/dist/spec/ui/progress.d.ts +24 -0
- package/dist/spec/ui/progress.d.ts.map +1 -0
- package/dist/spec/ui/progress.js +13 -0
- package/dist/spec/ui/progress.js.map +1 -0
- package/dist/spec/utils/fs.d.ts +45 -0
- package/dist/spec/utils/fs.d.ts.map +1 -0
- package/dist/spec/utils/fs.js +163 -0
- package/dist/spec/utils/fs.js.map +1 -0
- package/dist/spec/utils/index.d.ts +12 -0
- package/dist/spec/utils/index.d.ts.map +1 -0
- package/dist/spec/utils/index.js +26 -0
- package/dist/spec/utils/index.js.map +1 -0
- package/dist/spec/utils/meta.d.ts +32 -0
- package/dist/spec/utils/meta.d.ts.map +1 -0
- package/dist/spec/utils/meta.js +122 -0
- package/dist/spec/utils/meta.js.map +1 -0
- package/dist/spec/utils/truncate.d.ts +86 -0
- package/dist/spec/utils/truncate.d.ts.map +1 -0
- package/dist/spec/utils/truncate.js +172 -0
- package/dist/spec/utils/truncate.js.map +1 -0
- package/dist/spec/utils.d.ts +4 -16
- package/dist/spec/utils.d.ts.map +1 -1
- package/dist/spec/utils.js +6 -58
- package/dist/spec/utils.js.map +1 -1
- package/dist/sync/watcher.d.ts +25 -1
- package/dist/sync/watcher.d.ts.map +1 -1
- package/dist/sync/watcher.js +76 -3
- package/dist/sync/watcher.js.map +1 -1
- package/dist/telemetry/index.js +3 -3
- package/dist/telemetry/index.js.map +1 -1
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +7 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/spec/evolve/pipeline.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/spec/evolve/pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { SqliteDatabase } from '../../db/sqlite-adapter';
|
|
2
2
|
import { LlmClient } from '../llm/client';
|
|
3
|
+
import { ClusterContext } from '../types';
|
|
3
4
|
export interface EvolveDecision {
|
|
4
5
|
action: 'UPDATE' | 'DEPRECATE' | 'UNCHANGED';
|
|
5
6
|
title?: string;
|
|
@@ -7,18 +8,19 @@ export interface EvolveDecision {
|
|
|
7
8
|
plan_content?: string;
|
|
8
9
|
}
|
|
9
10
|
/**
|
|
10
|
-
* Ask the LLM whether a
|
|
11
|
-
* a spec unchanged.
|
|
11
|
+
* Ask the LLM whether a cluster of commits requires updating, deprecating,
|
|
12
|
+
* or leaving a spec unchanged.
|
|
12
13
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* @param
|
|
18
|
-
* @param
|
|
19
|
-
* @param
|
|
14
|
+
* Accepts a ClusterContext (multiple commits) and uses a cluster-aware
|
|
15
|
+
* prompt template that presents aggregated commit summaries rather than
|
|
16
|
+
* raw concatenated diffs.
|
|
17
|
+
*
|
|
18
|
+
* @param specId - The spec identifier (for logging / context).
|
|
19
|
+
* @param specFilePath - Absolute path to the plan.md file.
|
|
20
|
+
* @param clusterContext - Pre-built cluster context (from buildClusterContext).
|
|
21
|
+
* @param client - LLM client; if absent, returns UNCHANGED.
|
|
20
22
|
*/
|
|
21
|
-
export declare function
|
|
23
|
+
export declare function evaluateSpecWithCluster(specId: string, specFilePath: string, clusterContext: ClusterContext, client?: LlmClient): Promise<EvolveDecision>;
|
|
22
24
|
/**
|
|
23
25
|
* Apply an UPDATE decision: backup the old plan, write the new plan, version
|
|
24
26
|
* the spec in the database, and transfer relations.
|
|
@@ -27,7 +29,7 @@ export declare function evaluateSpec(specId: string, _specStoragePath: string, s
|
|
|
27
29
|
*
|
|
28
30
|
* @returns The new spec ID (same as old) and bumped version number.
|
|
29
31
|
*/
|
|
30
|
-
export declare function applyUpdate(db: SqliteDatabase,
|
|
32
|
+
export declare function applyUpdate(db: SqliteDatabase, oldSpecId: string, oldFilePath: string, oldVersion: number, decision: EvolveDecision, commitHash: string): {
|
|
31
33
|
newSpecId: string;
|
|
32
34
|
newVersion: number;
|
|
33
35
|
};
|
|
@@ -35,8 +37,6 @@ export declare function applyUpdate(db: SqliteDatabase, specStoragePath: string,
|
|
|
35
37
|
* Apply a DEPRECATE decision: mark the spec as deprecated, create a
|
|
36
38
|
* deprecated target node, create the EVOLVED_FROM relation, and clean
|
|
37
39
|
* SIMILAR_TO relations.
|
|
38
|
-
*
|
|
39
|
-
* Ported from spec_rewriter.py:181-231.
|
|
40
40
|
*/
|
|
41
41
|
export declare function applyDeprecate(db: SqliteDatabase, oldSpecId: string): void;
|
|
42
42
|
//# sourceMappingURL=spec-rewriter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-rewriter.d.ts","sourceRoot":"","sources":["../../../src/spec/evolve/spec-rewriter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"spec-rewriter.d.ts","sourceRoot":"","sources":["../../../src/spec/evolve/spec-rewriter.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAmBzD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAK1C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAO1C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,cAAc,EAC9B,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,cAAc,CAAC,CA2DzB;AAMD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,cAAc,EAClB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,MAAM,GACjB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CA8E3C;AAMD;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,cAAc,EAClB,SAAS,EAAE,MAAM,GAChB,IAAI,CAqBN"}
|
|
@@ -33,14 +33,12 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.
|
|
36
|
+
exports.evaluateSpecWithCluster = evaluateSpecWithCluster;
|
|
37
37
|
exports.applyUpdate = applyUpdate;
|
|
38
38
|
exports.applyDeprecate = applyDeprecate;
|
|
39
39
|
/**
|
|
40
|
-
* Spec rewriter — evaluates a commit's impact on a design spec and
|
|
41
|
-
* UPDATE / DEPRECATE decisions.
|
|
42
|
-
*
|
|
43
|
-
* Replaces `commit4spec/self_evolve/spec_rewriter.py` (lines 1-231).
|
|
40
|
+
* Spec rewriter — evaluates a commit cluster's impact on a design spec and
|
|
41
|
+
* applies UPDATE / DEPRECATE decisions.
|
|
44
42
|
*
|
|
45
43
|
* @module spec/evolve/spec-rewriter
|
|
46
44
|
*/
|
|
@@ -48,57 +46,66 @@ const fs = __importStar(require("fs"));
|
|
|
48
46
|
const utils_1 = require("../utils");
|
|
49
47
|
const spec_node_1 = require("../db/spec-node");
|
|
50
48
|
const relations_1 = require("../db/relations");
|
|
51
|
-
const spec_extractor_1 = require("../
|
|
49
|
+
const spec_extractor_1 = require("../build/spec-extractor");
|
|
52
50
|
const prompts_1 = require("../llm/prompts");
|
|
53
51
|
const errors_1 = require("../../errors");
|
|
54
52
|
// =============================================================================
|
|
55
|
-
//
|
|
53
|
+
// evaluateSpecWithCluster
|
|
56
54
|
// =============================================================================
|
|
57
55
|
/**
|
|
58
|
-
* Ask the LLM whether a
|
|
59
|
-
* a spec unchanged.
|
|
56
|
+
* Ask the LLM whether a cluster of commits requires updating, deprecating,
|
|
57
|
+
* or leaving a spec unchanged.
|
|
58
|
+
*
|
|
59
|
+
* Accepts a ClusterContext (multiple commits) and uses a cluster-aware
|
|
60
|
+
* prompt template that presents aggregated commit summaries rather than
|
|
61
|
+
* raw concatenated diffs.
|
|
60
62
|
*
|
|
61
|
-
* @param specId
|
|
62
|
-
* @param
|
|
63
|
-
* @param
|
|
64
|
-
* @param
|
|
65
|
-
* @param commitDiff - Full unified diff of the commit.
|
|
66
|
-
* @param scheduleNextSpecs - Remaining spec IDs to be processed (for context).
|
|
67
|
-
* @param client - Optional LLM client; if absent, returns UNCHANGED.
|
|
63
|
+
* @param specId - The spec identifier (for logging / context).
|
|
64
|
+
* @param specFilePath - Absolute path to the plan.md file.
|
|
65
|
+
* @param clusterContext - Pre-built cluster context (from buildClusterContext).
|
|
66
|
+
* @param client - LLM client; if absent, returns UNCHANGED.
|
|
68
67
|
*/
|
|
69
|
-
async function
|
|
68
|
+
async function evaluateSpecWithCluster(specId, specFilePath, clusterContext, client) {
|
|
70
69
|
// 1. Read plan content
|
|
71
70
|
const planContent = (0, utils_1.readFileContent)(specFilePath);
|
|
72
71
|
if (planContent === null) {
|
|
73
|
-
(0, errors_1.logDebug)('
|
|
72
|
+
(0, errors_1.logDebug)('evaluateSpecWithCluster: plan file not found, returning UNCHANGED', {
|
|
74
73
|
specId,
|
|
75
74
|
specFilePath,
|
|
76
75
|
});
|
|
77
76
|
return { action: 'UNCHANGED' };
|
|
78
77
|
}
|
|
79
|
-
// 2.
|
|
80
|
-
const
|
|
81
|
-
// 3.
|
|
82
|
-
const userPrompt = (0, prompts_1.buildSpecEvaluationUserPrompt)(planContent, commitMessage, truncatedDiff, scheduleNextSpecs);
|
|
83
|
-
// 4. Call LLM
|
|
78
|
+
// 2. Build user prompt from cluster context
|
|
79
|
+
const userPrompt = (0, prompts_1.buildClusterSpecEvaluationUserPrompt)(planContent, clusterContext);
|
|
80
|
+
// 3. Call LLM
|
|
84
81
|
if (!client) {
|
|
85
|
-
(0, errors_1.logDebug)('
|
|
82
|
+
(0, errors_1.logDebug)('evaluateSpecWithCluster: no LLM client, returning UNCHANGED', { specId });
|
|
86
83
|
return { action: 'UNCHANGED' };
|
|
87
84
|
}
|
|
88
|
-
|
|
89
|
-
|
|
85
|
+
let result;
|
|
86
|
+
try {
|
|
87
|
+
result = await client.chatJson(prompts_1.SPEC_EVALUATION_CLUSTER_SYSTEM_PROMPT, userPrompt);
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
(0, errors_1.logWarn)('evaluateSpecWithCluster: LLM call failed, defaulting to UNCHANGED', {
|
|
91
|
+
specId,
|
|
92
|
+
error: err instanceof Error ? err.message : String(err),
|
|
93
|
+
});
|
|
94
|
+
return { action: 'UNCHANGED' };
|
|
95
|
+
}
|
|
96
|
+
// 4. Validate action
|
|
90
97
|
const rawAction = result.action;
|
|
91
98
|
let action = 'UNCHANGED';
|
|
92
99
|
if (rawAction === 'UPDATE' || rawAction === 'DEPRECATE' || rawAction === 'UNCHANGED') {
|
|
93
100
|
action = rawAction;
|
|
94
101
|
}
|
|
95
102
|
else {
|
|
96
|
-
(0, errors_1.logWarn)('
|
|
103
|
+
(0, errors_1.logWarn)('evaluateSpecWithCluster: unknown action from LLM, defaulting to UNCHANGED', {
|
|
97
104
|
specId,
|
|
98
105
|
rawAction: String(rawAction),
|
|
99
106
|
});
|
|
100
107
|
}
|
|
101
|
-
//
|
|
108
|
+
// 5. Return EvolveDecision
|
|
102
109
|
return {
|
|
103
110
|
action,
|
|
104
111
|
title: typeof result.title === 'string' ? result.title : undefined,
|
|
@@ -119,24 +126,21 @@ async function evaluateSpec(specId, _specStoragePath, specFilePath, commitMessag
|
|
|
119
126
|
*
|
|
120
127
|
* @returns The new spec ID (same as old) and bumped version number.
|
|
121
128
|
*/
|
|
122
|
-
function applyUpdate(db,
|
|
129
|
+
function applyUpdate(db, oldSpecId, oldFilePath, oldVersion, decision, commitHash) {
|
|
123
130
|
// ---- Step 1: Write new plan content to temp file ----
|
|
124
|
-
|
|
125
|
-
// DB operation succeeds. If the caller's transaction rolls back, the
|
|
126
|
-
// temp file is harmless garbage — the original plan.md is untouched.
|
|
131
|
+
const newContent = decision.plan_content || '';
|
|
127
132
|
const tmpPath = oldFilePath + '.new';
|
|
128
|
-
(0, utils_1.writeFileContent)(tmpPath,
|
|
129
|
-
// ---- Step 2: Extract
|
|
130
|
-
|
|
131
|
-
const
|
|
132
|
-
const
|
|
133
|
+
(0, utils_1.writeFileContent)(tmpPath, newContent);
|
|
134
|
+
// ---- Step 2: Extract metadata from the NEW content ----
|
|
135
|
+
// (parsed from the rewritten plan, not the stale on-disk original)
|
|
136
|
+
const newTitle = (0, spec_extractor_1.extractTitleFromMarkdown)(newContent, '');
|
|
137
|
+
const newSubtitles = (0, spec_extractor_1.extractMarkdownHeadings)(newContent);
|
|
133
138
|
// ---- Step 3: Read old spec data ----
|
|
134
139
|
const oldSpec = (0, spec_node_1.findSpecById)(db, oldSpecId);
|
|
135
140
|
if (!oldSpec) {
|
|
136
141
|
(0, errors_1.logDebug)('applyUpdate: old spec not found in DB, returning early', {
|
|
137
142
|
oldSpecId,
|
|
138
143
|
});
|
|
139
|
-
// Clean up the temp file — no DB changes were made.
|
|
140
144
|
try {
|
|
141
145
|
fs.unlinkSync(tmpPath);
|
|
142
146
|
}
|
|
@@ -164,8 +168,8 @@ function applyUpdate(db, specStoragePath, oldSpecId, oldFilePath, oldVersion, de
|
|
|
164
168
|
const newVersion = oldVersion + 1;
|
|
165
169
|
(0, spec_node_1.insertSpecNode)(db, {
|
|
166
170
|
id: oldSpecId,
|
|
167
|
-
title: decision.title ||
|
|
168
|
-
subtitles: decision.subtitles ||
|
|
171
|
+
title: decision.title || newTitle || oldSpec.title || oldSpecId,
|
|
172
|
+
subtitles: decision.subtitles || (newSubtitles.length > 0 ? newSubtitles : oldSpec.subtitles),
|
|
169
173
|
status: 'active',
|
|
170
174
|
version: newVersion,
|
|
171
175
|
filePath: oldFilePath,
|
|
@@ -176,8 +180,6 @@ function applyUpdate(db, specStoragePath, oldSpecId, oldFilePath, oldVersion, de
|
|
|
176
180
|
// ---- Step 9: Create GENERATE relation ----
|
|
177
181
|
(0, relations_1.insertSpecCommitRelation)(db, oldSpecId, commitHash, 'GENERATE');
|
|
178
182
|
// ---- Step 10: File system finalisation ----
|
|
179
|
-
// Only now — after all DB ops succeeded — do we touch the original disk
|
|
180
|
-
// files. rename() is atomic on the same filesystem.
|
|
181
183
|
try {
|
|
182
184
|
fs.renameSync(oldFilePath, bakPath);
|
|
183
185
|
}
|
|
@@ -205,8 +207,6 @@ function applyUpdate(db, specStoragePath, oldSpecId, oldFilePath, oldVersion, de
|
|
|
205
207
|
* Apply a DEPRECATE decision: mark the spec as deprecated, create a
|
|
206
208
|
* deprecated target node, create the EVOLVED_FROM relation, and clean
|
|
207
209
|
* SIMILAR_TO relations.
|
|
208
|
-
*
|
|
209
|
-
* Ported from spec_rewriter.py:181-231.
|
|
210
210
|
*/
|
|
211
211
|
function applyDeprecate(db, oldSpecId) {
|
|
212
212
|
// 1. Mark the spec as deprecated
|
|
@@ -219,7 +219,7 @@ function applyDeprecate(db, oldSpecId) {
|
|
|
219
219
|
version: 1,
|
|
220
220
|
title: oldSpecId,
|
|
221
221
|
subtitles: [],
|
|
222
|
-
filePath: '',
|
|
222
|
+
filePath: '',
|
|
223
223
|
timestamp: Date.now(),
|
|
224
224
|
});
|
|
225
225
|
// 3. Create EVOLVED_FROM relation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-rewriter.js","sourceRoot":"","sources":["../../../src/spec/evolve/spec-rewriter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"spec-rewriter.js","sourceRoot":"","sources":["../../../src/spec/evolve/spec-rewriter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git commit history access for the spec module — commit listing, single
|
|
3
|
+
* commit metadata, diffs, HEAD resolution, and ancestry checks.
|
|
4
|
+
*
|
|
5
|
+
* All Git operations use `execFileSync` with an args array (never template
|
|
6
|
+
* strings) to avoid shell injection risks — matching the HomeGraph convention
|
|
7
|
+
* in `src/sync/git-hooks.ts` and `src/sync/worktree.ts`.
|
|
8
|
+
*
|
|
9
|
+
* @module spec/git/commits
|
|
10
|
+
*/
|
|
11
|
+
export interface CommitInfo {
|
|
12
|
+
/** Full 40-char commit hash */
|
|
13
|
+
hash: string;
|
|
14
|
+
/** First line of commit message */
|
|
15
|
+
message: string;
|
|
16
|
+
/** Author name */
|
|
17
|
+
author: string;
|
|
18
|
+
/** Unix epoch milliseconds */
|
|
19
|
+
timestamp: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Check whether `repoPath` is a git repository.
|
|
23
|
+
*
|
|
24
|
+
* Runs `git rev-parse --git-dir` and returns `true` on success, `false`
|
|
25
|
+
* when the command fails (not a repo, git not installed, etc.).
|
|
26
|
+
*/
|
|
27
|
+
export declare function isGitRepo(repoPath: string): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Resolve the current HEAD commit hash. Returns `null` when HEAD cannot be
|
|
30
|
+
* resolved (not a repo, unborn branch, etc.).
|
|
31
|
+
*/
|
|
32
|
+
export declare function getHeadHash(repoPath: string): string | null;
|
|
33
|
+
/**
|
|
34
|
+
* Check whether `ancestor` is an ancestor of `descendant` in the git history
|
|
35
|
+
* (via `git merge-base --is-ancestor`).
|
|
36
|
+
*/
|
|
37
|
+
export declare function isAncestor(repoPath: string, ancestor: string, descendant: string): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Return every commit in `repoPath` as `CommitInfo` objects, in reverse
|
|
40
|
+
* chronological order (most recent first), matching Git's default.
|
|
41
|
+
*
|
|
42
|
+
* An empty repo yields an empty array.
|
|
43
|
+
*/
|
|
44
|
+
export declare function getAllCommits(repoPath: string): CommitInfo[];
|
|
45
|
+
/**
|
|
46
|
+
* Return every commit between `fromHash` (exclusive) and `toHash`
|
|
47
|
+
* (inclusive) in chronological order (oldest first). Merge commits are
|
|
48
|
+
* excluded. Returns an empty array when either hash is not found or the
|
|
49
|
+
* range is empty.
|
|
50
|
+
*
|
|
51
|
+
* Callers should validate that `fromHash` is an ancestor of `toHash` before
|
|
52
|
+
* calling this function (use {@link isAncestor}). Results are undefined when
|
|
53
|
+
* the two hashes are on unrelated branches.
|
|
54
|
+
*/
|
|
55
|
+
export declare function getCommitRange(repoPath: string, fromHash: string, toHash: string): CommitInfo[];
|
|
56
|
+
/**
|
|
57
|
+
* Return every commit reachable from `toHash` in chronological order
|
|
58
|
+
* (oldest first). Merge commits are excluded.
|
|
59
|
+
*/
|
|
60
|
+
export declare function getCommitsUpTo(repoPath: string, toHash: string): CommitInfo[];
|
|
61
|
+
/**
|
|
62
|
+
* Retrieve metadata for a single commit.
|
|
63
|
+
*
|
|
64
|
+
* Runs `git show -s --format='%H%n%aI%n%an%n%s' <commitHash>`. Returns
|
|
65
|
+
* `null` when the command fails (hash not found, invalid repo, etc.).
|
|
66
|
+
*/
|
|
67
|
+
export declare function getCommitInfo(repoPath: string, commitHash: string): CommitInfo | null;
|
|
68
|
+
/**
|
|
69
|
+
* Get the parent hash(es) for a commit.
|
|
70
|
+
* Returns an empty array for root commits or on failure.
|
|
71
|
+
*/
|
|
72
|
+
export declare function getParentHashes(repoPath: string, commitHash: string): string[];
|
|
73
|
+
/**
|
|
74
|
+
* Return the full unified diff introduced by `commitHash`.
|
|
75
|
+
*
|
|
76
|
+
* Strategy:
|
|
77
|
+
* 1. Query the parent hash(es) via {@link getParentHashes}.
|
|
78
|
+
* 2. If a parent exists, diff it against the commit: `git diff <parent> <commitHash>`.
|
|
79
|
+
* 3. For an initial (root) commit with no parent, use `git diff <commitHash>`
|
|
80
|
+
* which shows all files added in that commit.
|
|
81
|
+
*
|
|
82
|
+
* Returns an empty string when any Git command fails.
|
|
83
|
+
*/
|
|
84
|
+
export declare function getCommitDiff(repoPath: string, commitHash: string): string;
|
|
85
|
+
//# sourceMappingURL=commits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commits.d.ts","sourceRoot":"","sources":["../../../src/spec/git/commits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,MAAM,WAAW,UAAU;IACzB,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB;AA2DD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOnD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM3D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAWT;AAMD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,CAE5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,UAAU,EAAE,CAEd;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,CAE7E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,UAAU,GAAG,IAAI,CAwBnB;AAMD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAW9E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CA+B1E"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Git commit history access for the spec module — commit listing, single
|
|
4
|
+
* commit metadata, diffs, HEAD resolution, and ancestry checks.
|
|
5
|
+
*
|
|
6
|
+
* All Git operations use `execFileSync` with an args array (never template
|
|
7
|
+
* strings) to avoid shell injection risks — matching the HomeGraph convention
|
|
8
|
+
* in `src/sync/git-hooks.ts` and `src/sync/worktree.ts`.
|
|
9
|
+
*
|
|
10
|
+
* @module spec/git/commits
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.isGitRepo = isGitRepo;
|
|
14
|
+
exports.getHeadHash = getHeadHash;
|
|
15
|
+
exports.isAncestor = isAncestor;
|
|
16
|
+
exports.getAllCommits = getAllCommits;
|
|
17
|
+
exports.getCommitRange = getCommitRange;
|
|
18
|
+
exports.getCommitsUpTo = getCommitsUpTo;
|
|
19
|
+
exports.getCommitInfo = getCommitInfo;
|
|
20
|
+
exports.getParentHashes = getParentHashes;
|
|
21
|
+
exports.getCommitDiff = getCommitDiff;
|
|
22
|
+
const child_process_1 = require("child_process");
|
|
23
|
+
const exec_1 = require("./exec");
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
// git log parsing
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
/** NUL-separated `git log` format: hash, author ISO date, author name, subject. */
|
|
28
|
+
const GIT_LOG_FORMAT = '--format=%H%x00%aI%x00%an%x00%s%x00';
|
|
29
|
+
/**
|
|
30
|
+
* Convert an ISO-8601 string to Unix epoch milliseconds.
|
|
31
|
+
* Returns 0 for invalid or unparseable strings.
|
|
32
|
+
*/
|
|
33
|
+
function parseISOTimestamp(isoString) {
|
|
34
|
+
const ts = new Date(isoString).getTime();
|
|
35
|
+
return isNaN(ts) ? 0 : ts;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Parse NUL-separated `git log` output (see {@link GIT_LOG_FORMAT}) into
|
|
39
|
+
* `CommitInfo` objects. Each commit occupies 4 fields.
|
|
40
|
+
*/
|
|
41
|
+
function parseGitLogOutput(stdout) {
|
|
42
|
+
const parts = stdout.replace(/\0+$/, '').trim().split('\0');
|
|
43
|
+
const commits = [];
|
|
44
|
+
for (let i = 0; i + 3 < parts.length; i += 4) {
|
|
45
|
+
const hash = parts[i].trim();
|
|
46
|
+
if (!hash)
|
|
47
|
+
continue;
|
|
48
|
+
commits.push({
|
|
49
|
+
hash,
|
|
50
|
+
timestamp: parseISOTimestamp(parts[i + 1].trim()),
|
|
51
|
+
author: parts[i + 2].trim(),
|
|
52
|
+
message: parts[i + 3].trim(),
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
return commits;
|
|
56
|
+
}
|
|
57
|
+
/** Run `git log` with the shared NUL format; returns [] on any failure. */
|
|
58
|
+
function gitLog(repoPath, args) {
|
|
59
|
+
try {
|
|
60
|
+
const stdout = (0, child_process_1.execFileSync)('git', ['log', ...args, GIT_LOG_FORMAT], (0, exec_1.gitExecOptions)(repoPath));
|
|
61
|
+
return parseGitLogOutput(stdout);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// ---------------------------------------------------------------------------
|
|
68
|
+
// Repository / HEAD
|
|
69
|
+
// ---------------------------------------------------------------------------
|
|
70
|
+
/**
|
|
71
|
+
* Check whether `repoPath` is a git repository.
|
|
72
|
+
*
|
|
73
|
+
* Runs `git rev-parse --git-dir` and returns `true` on success, `false`
|
|
74
|
+
* when the command fails (not a repo, git not installed, etc.).
|
|
75
|
+
*/
|
|
76
|
+
function isGitRepo(repoPath) {
|
|
77
|
+
try {
|
|
78
|
+
(0, child_process_1.execFileSync)('git', ['rev-parse', '--git-dir'], (0, exec_1.gitExecOptions)(repoPath));
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Resolve the current HEAD commit hash. Returns `null` when HEAD cannot be
|
|
87
|
+
* resolved (not a repo, unborn branch, etc.).
|
|
88
|
+
*/
|
|
89
|
+
function getHeadHash(repoPath) {
|
|
90
|
+
try {
|
|
91
|
+
return (0, child_process_1.execFileSync)('git', ['rev-parse', 'HEAD'], (0, exec_1.gitExecOptions)(repoPath)).trim();
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Check whether `ancestor` is an ancestor of `descendant` in the git history
|
|
99
|
+
* (via `git merge-base --is-ancestor`).
|
|
100
|
+
*/
|
|
101
|
+
function isAncestor(repoPath, ancestor, descendant) {
|
|
102
|
+
try {
|
|
103
|
+
(0, child_process_1.execFileSync)('git', ['merge-base', '--is-ancestor', ancestor, descendant], (0, exec_1.gitExecOptions)(repoPath));
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// ---------------------------------------------------------------------------
|
|
111
|
+
// Commit listing
|
|
112
|
+
// ---------------------------------------------------------------------------
|
|
113
|
+
/**
|
|
114
|
+
* Return every commit in `repoPath` as `CommitInfo` objects, in reverse
|
|
115
|
+
* chronological order (most recent first), matching Git's default.
|
|
116
|
+
*
|
|
117
|
+
* An empty repo yields an empty array.
|
|
118
|
+
*/
|
|
119
|
+
function getAllCommits(repoPath) {
|
|
120
|
+
return gitLog(repoPath, []);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Return every commit between `fromHash` (exclusive) and `toHash`
|
|
124
|
+
* (inclusive) in chronological order (oldest first). Merge commits are
|
|
125
|
+
* excluded. Returns an empty array when either hash is not found or the
|
|
126
|
+
* range is empty.
|
|
127
|
+
*
|
|
128
|
+
* Callers should validate that `fromHash` is an ancestor of `toHash` before
|
|
129
|
+
* calling this function (use {@link isAncestor}). Results are undefined when
|
|
130
|
+
* the two hashes are on unrelated branches.
|
|
131
|
+
*/
|
|
132
|
+
function getCommitRange(repoPath, fromHash, toHash) {
|
|
133
|
+
return gitLog(repoPath, ['--no-merges', '--reverse', `${fromHash}..${toHash}`]);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Return every commit reachable from `toHash` in chronological order
|
|
137
|
+
* (oldest first). Merge commits are excluded.
|
|
138
|
+
*/
|
|
139
|
+
function getCommitsUpTo(repoPath, toHash) {
|
|
140
|
+
return gitLog(repoPath, ['--no-merges', '--reverse', toHash]);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Retrieve metadata for a single commit.
|
|
144
|
+
*
|
|
145
|
+
* Runs `git show -s --format='%H%n%aI%n%an%n%s' <commitHash>`. Returns
|
|
146
|
+
* `null` when the command fails (hash not found, invalid repo, etc.).
|
|
147
|
+
*/
|
|
148
|
+
function getCommitInfo(repoPath, commitHash) {
|
|
149
|
+
let stdout;
|
|
150
|
+
try {
|
|
151
|
+
stdout = (0, child_process_1.execFileSync)('git', ['show', '-s', '--format=%H%n%aI%n%an%n%s', commitHash], (0, exec_1.gitExecOptions)(repoPath));
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
const lines = stdout.trim().split('\n');
|
|
157
|
+
if (lines.length < 4)
|
|
158
|
+
return null;
|
|
159
|
+
const hash = lines[0].trim();
|
|
160
|
+
if (!hash)
|
|
161
|
+
return null;
|
|
162
|
+
return {
|
|
163
|
+
hash,
|
|
164
|
+
timestamp: parseISOTimestamp(lines[1].trim()),
|
|
165
|
+
author: lines[2].trim(),
|
|
166
|
+
message: lines[3].trim(),
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
// ---------------------------------------------------------------------------
|
|
170
|
+
// Diffs
|
|
171
|
+
// ---------------------------------------------------------------------------
|
|
172
|
+
/**
|
|
173
|
+
* Get the parent hash(es) for a commit.
|
|
174
|
+
* Returns an empty array for root commits or on failure.
|
|
175
|
+
*/
|
|
176
|
+
function getParentHashes(repoPath, commitHash) {
|
|
177
|
+
try {
|
|
178
|
+
const stdout = (0, child_process_1.execFileSync)('git', ['log', '--pretty=%P', '-n', '1', commitHash], (0, exec_1.gitExecOptions)(repoPath));
|
|
179
|
+
return stdout.trim().split(/\s+/).filter(Boolean);
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
return [];
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Return the full unified diff introduced by `commitHash`.
|
|
187
|
+
*
|
|
188
|
+
* Strategy:
|
|
189
|
+
* 1. Query the parent hash(es) via {@link getParentHashes}.
|
|
190
|
+
* 2. If a parent exists, diff it against the commit: `git diff <parent> <commitHash>`.
|
|
191
|
+
* 3. For an initial (root) commit with no parent, use `git diff <commitHash>`
|
|
192
|
+
* which shows all files added in that commit.
|
|
193
|
+
*
|
|
194
|
+
* Returns an empty string when any Git command fails.
|
|
195
|
+
*/
|
|
196
|
+
function getCommitDiff(repoPath, commitHash) {
|
|
197
|
+
const parents = getParentHashes(repoPath, commitHash);
|
|
198
|
+
try {
|
|
199
|
+
if (parents.length > 0) {
|
|
200
|
+
const diffs = [];
|
|
201
|
+
for (const parent of parents) {
|
|
202
|
+
try {
|
|
203
|
+
diffs.push((0, child_process_1.execFileSync)('git', ['diff', parent, commitHash], (0, exec_1.gitExecOptions)(repoPath)));
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
// Skip diffs that fail for an individual parent
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return diffs.join('\n');
|
|
210
|
+
}
|
|
211
|
+
// Initial commit — no parent.
|
|
212
|
+
return (0, child_process_1.execFileSync)('git', ['diff', commitHash], (0, exec_1.gitExecOptions)(repoPath));
|
|
213
|
+
}
|
|
214
|
+
catch {
|
|
215
|
+
return '';
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=commits.js.map
|