@productbrain/cli 0.1.0-beta.11277 → 0.1.0-beta.11288
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 +3 -2
- package/dist/__tests__/cli-error-once.test.d.ts +2 -0
- package/dist/__tests__/cli-error-once.test.d.ts.map +1 -0
- package/dist/__tests__/cli-error-once.test.js +51 -0
- package/dist/__tests__/cli-error-once.test.js.map +1 -0
- package/dist/__tests__/init.test.d.ts +2 -1
- package/dist/__tests__/init.test.d.ts.map +1 -1
- package/dist/__tests__/init.test.js +110 -8
- package/dist/__tests__/init.test.js.map +1 -1
- package/dist/__tests__/removed-commands.test.js +31 -2
- package/dist/__tests__/removed-commands.test.js.map +1 -1
- package/dist/commands/connect-integration.test.js +1 -5
- package/dist/commands/connect-integration.test.js.map +1 -1
- package/dist/commands/connect-legacy-migration.test.js +0 -1
- package/dist/commands/connect-legacy-migration.test.js.map +1 -1
- package/dist/commands/connect-screens.d.ts +9 -13
- package/dist/commands/connect-screens.d.ts.map +1 -1
- package/dist/commands/connect-screens.js +16 -78
- package/dist/commands/connect-screens.js.map +1 -1
- package/dist/commands/connect-screens.test.d.ts +2 -0
- package/dist/commands/connect-screens.test.d.ts.map +1 -0
- package/dist/commands/connect-screens.test.js +18 -0
- package/dist/commands/connect-screens.test.js.map +1 -0
- package/dist/commands/connect.js +5 -5
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/connect.test.js +0 -4
- package/dist/commands/connect.test.js.map +1 -1
- package/dist/commands/init.d.ts +14 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +90 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/generated/routeLatencyBudget.generated.d.ts +0 -1
- package/dist/generated/routeLatencyBudget.generated.d.ts.map +1 -1
- package/dist/generated/routeLatencyBudget.generated.js +0 -10
- package/dist/generated/routeLatencyBudget.generated.js.map +1 -1
- package/dist/handleCliError.d.ts +17 -0
- package/dist/handleCliError.d.ts.map +1 -1
- package/dist/handleCliError.js +14 -3
- package/dist/handleCliError.js.map +1 -1
- package/dist/index.js +7 -33
- package/dist/index.js.map +1 -1
- package/dist/lib/client.d.ts.map +1 -1
- package/dist/lib/client.js +1 -2
- package/dist/lib/client.js.map +1 -1
- package/dist/lib/strip.d.ts +1 -1
- package/dist/lib/strip.js +1 -1
- package/package.json +1 -2
- package/dist/__tests__/handshake-augment.test.d.ts +0 -2
- package/dist/__tests__/handshake-augment.test.d.ts.map +0 -1
- package/dist/__tests__/handshake-augment.test.js +0 -407
- package/dist/__tests__/handshake-augment.test.js.map +0 -1
- package/dist/__tests__/handshake-dormancy.test.d.ts +0 -2
- package/dist/__tests__/handshake-dormancy.test.d.ts.map +0 -1
- package/dist/__tests__/handshake-dormancy.test.js +0 -24
- package/dist/__tests__/handshake-dormancy.test.js.map +0 -1
- package/dist/__tests__/handshake-formatter.test.d.ts +0 -2
- package/dist/__tests__/handshake-formatter.test.d.ts.map +0 -1
- package/dist/__tests__/handshake-formatter.test.js +0 -111
- package/dist/__tests__/handshake-formatter.test.js.map +0 -1
- package/dist/__tests__/handshake-preview.test.d.ts +0 -2
- package/dist/__tests__/handshake-preview.test.d.ts.map +0 -1
- package/dist/__tests__/handshake-preview.test.js +0 -500
- package/dist/__tests__/handshake-preview.test.js.map +0 -1
- package/dist/__tests__/handshake-session-threading.test.d.ts +0 -2
- package/dist/__tests__/handshake-session-threading.test.d.ts.map +0 -1
- package/dist/__tests__/handshake-session-threading.test.js +0 -185
- package/dist/__tests__/handshake-session-threading.test.js.map +0 -1
- package/dist/__tests__/handshake.e2e.test.d.ts +0 -2
- package/dist/__tests__/handshake.e2e.test.d.ts.map +0 -1
- package/dist/__tests__/handshake.e2e.test.js +0 -226
- package/dist/__tests__/handshake.e2e.test.js.map +0 -1
- package/dist/__tests__/handshake.test.d.ts +0 -2
- package/dist/__tests__/handshake.test.d.ts.map +0 -1
- package/dist/__tests__/handshake.test.js +0 -1040
- package/dist/__tests__/handshake.test.js.map +0 -1
- package/dist/__tests__/method-registry.integration.test.d.ts +0 -6
- package/dist/__tests__/method-registry.integration.test.d.ts.map +0 -1
- package/dist/__tests__/method-registry.integration.test.js +0 -17
- package/dist/__tests__/method-registry.integration.test.js.map +0 -1
- package/dist/__tests__/method-registry.test.d.ts +0 -12
- package/dist/__tests__/method-registry.test.d.ts.map +0 -1
- package/dist/__tests__/method-registry.test.js +0 -86
- package/dist/__tests__/method-registry.test.js.map +0 -1
- package/dist/commands/connect-context.d.ts +0 -55
- package/dist/commands/connect-context.d.ts.map +0 -1
- package/dist/commands/connect-context.js +0 -78
- package/dist/commands/connect-context.js.map +0 -1
- package/dist/commands/connect-context.test.d.ts +0 -2
- package/dist/commands/connect-context.test.d.ts.map +0 -1
- package/dist/commands/connect-context.test.js +0 -148
- package/dist/commands/connect-context.test.js.map +0 -1
- package/dist/commands/digest.d.ts +0 -17
- package/dist/commands/digest.d.ts.map +0 -1
- package/dist/commands/digest.js +0 -58
- package/dist/commands/digest.js.map +0 -1
- package/dist/commands/digest.test.d.ts +0 -2
- package/dist/commands/digest.test.d.ts.map +0 -1
- package/dist/commands/digest.test.js +0 -36
- package/dist/commands/digest.test.js.map +0 -1
- package/dist/commands/handshake.d.ts +0 -78
- package/dist/commands/handshake.d.ts.map +0 -1
- package/dist/commands/handshake.js +0 -1359
- package/dist/commands/handshake.js.map +0 -1
- package/dist/formatters/digest.d.ts +0 -13
- package/dist/formatters/digest.d.ts.map +0 -1
- package/dist/formatters/digest.js +0 -98
- package/dist/formatters/digest.js.map +0 -1
- package/dist/formatters/digest.test.d.ts +0 -2
- package/dist/formatters/digest.test.d.ts.map +0 -1
- package/dist/formatters/digest.test.js +0 -166
- package/dist/formatters/digest.test.js.map +0 -1
- package/dist/lib/method-registry.d.ts +0 -37
- package/dist/lib/method-registry.d.ts.map +0 -1
- package/dist/lib/method-registry.js +0 -41
- package/dist/lib/method-registry.js.map +0 -1
- package/templates/general/code-integrity.md +0 -11
- package/templates/general/getting-started.md +0 -12
- package/templates/method-registry.json +0 -16
- package/templates/node-ts/code-integrity.md +0 -13
- package/templates/node-ts/testing.md +0 -12
- package/templates/python/code-integrity.md +0 -13
- package/templates/python/testing.md +0 -12
package/dist/commands/digest.js
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* pb digest --since <ISO or 7d> — read-only, plain-English brief over a run's pending
|
|
3
|
-
* drafts, grouped into narrative themes with a founder-decisions vs agent-fixes split
|
|
4
|
-
* (TASK-130, WP-702). No accept surface — nothing here writes to the Chain.
|
|
5
|
-
*
|
|
6
|
-
* Chain: DEC-299 (agent-native, JSON-default), STD-65 (structured, parseable, minimal)
|
|
7
|
-
*/
|
|
8
|
-
import { getConfigOrGuide } from '../lib/config.js';
|
|
9
|
-
import { kernelCall } from '../lib/client.js';
|
|
10
|
-
import { runCliCommand } from '../lib/runner.js';
|
|
11
|
-
import { formatDigest } from '../formatters/digest.js';
|
|
12
|
-
import { CLIError, ErrorCode } from '../lib/errors.js';
|
|
13
|
-
/** `<n>h` or `<n>d` — same shorthand `pb changes --since` uses. */
|
|
14
|
-
const DURATION_RE = /^(\d+)(h|d)$/i;
|
|
15
|
-
/**
|
|
16
|
-
* Strict ISO 8601 date/datetime shape (PR #1122 round 1 review, P1): `Date.parse` is a
|
|
17
|
-
* notoriously loose parser (V8 happily accepts free-text like "September 1" or a bare "1" as a
|
|
18
|
-
* relative/implicit date) — accepting anything it parses let a typo silently resolve to some
|
|
19
|
-
* unintended timestamp instead of failing with guidance. Requires a full `YYYY-MM-DD`, optionally
|
|
20
|
-
* followed by a time (`Thh:mm`, seconds/fraction, and a `Z` or `±hh:mm` offset all optional).
|
|
21
|
-
*/
|
|
22
|
-
const ISO_8601_RE = /^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})?)?$/;
|
|
23
|
-
/**
|
|
24
|
-
* Accepts an ISO 8601 timestamp OR a short duration (numeric + h/d suffix). Returns a ms-epoch
|
|
25
|
-
* window start, or null when neither shape matches (checked BEFORE `Date.parse` ever runs, so a
|
|
26
|
-
* loose-but-parseable free-text string like "September 1" is rejected, not silently accepted).
|
|
27
|
-
*/
|
|
28
|
-
export function parseSince(input) {
|
|
29
|
-
const durationMatch = input.match(DURATION_RE);
|
|
30
|
-
if (durationMatch) {
|
|
31
|
-
const value = parseInt(durationMatch[1], 10);
|
|
32
|
-
const unit = durationMatch[2].toLowerCase();
|
|
33
|
-
const durationMs = unit === 'h' ? value * 3_600_000 : value * 86_400_000;
|
|
34
|
-
return Date.now() - durationMs;
|
|
35
|
-
}
|
|
36
|
-
if (!ISO_8601_RE.test(input))
|
|
37
|
-
return null;
|
|
38
|
-
const parsed = Date.parse(input);
|
|
39
|
-
return Number.isNaN(parsed) ? null : parsed;
|
|
40
|
-
}
|
|
41
|
-
export async function runDigest(options) {
|
|
42
|
-
const config = await getConfigOrGuide(() => runDigest(options));
|
|
43
|
-
if (!config)
|
|
44
|
-
return;
|
|
45
|
-
const since = parseSince(options.since);
|
|
46
|
-
if (since === null) {
|
|
47
|
-
throw new CLIError(`Invalid --since value: '${options.since}'.`, {
|
|
48
|
-
code: ErrorCode.VALIDATION_FAILED,
|
|
49
|
-
category: 'validation',
|
|
50
|
-
guidance: `Use an ISO 8601 timestamp (e.g. '2026-09-17T00:00:00Z') or a short duration (1h, 6h, 1d, 7d, 30d).`,
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
await runCliCommand({
|
|
54
|
-
fn: () => kernelCall('chain.runDigest', { since }),
|
|
55
|
-
formatPretty: (result) => formatDigest(result, options.since),
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=digest.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"digest.js","sourceRoot":"","sources":["../../src/commands/digest.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAqB,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEvD,mEAAmE;AACnE,MAAM,WAAW,GAAG,eAAe,CAAC;AAEpC;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,yEAAyE,CAAC;AAE9F;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC;QACzE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC;IACjC,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAA0B;IACxD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,QAAQ,CAChB,2BAA2B,OAAO,CAAC,KAAK,IAAI,EAC5C;YACE,IAAI,EAAE,SAAS,CAAC,iBAAiB;YACjC,QAAQ,EAAE,YAAY;YACtB,QAAQ,EAAE,oGAAoG;SAC/G,CACF,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,CAAe;QAChC,EAAE,EAAE,GAAG,EAAE,CACP,UAAU,CAA8C,iBAAiB,EAAE,EAAE,KAAK,EAAE,CAAC;QACvF,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC;KAC9D,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"digest.test.d.ts","sourceRoot":"","sources":["../../src/commands/digest.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TASK-130 (WP-702) — `pb digest --since` parsing tests. PR #1122 round 1 review (P1):
|
|
3
|
-
* `Date.parse` is a loose parser (V8 accepts free-text like "September 1" and even a bare "1"
|
|
4
|
-
* as some implicit date) — `parseSince` must reject anything outside the `<n>d`/`<n>h`
|
|
5
|
-
* duration shape or a strict ISO 8601 shape, never silently resolve a typo to a timestamp.
|
|
6
|
-
*/
|
|
7
|
-
import { describe, expect, it } from 'vitest';
|
|
8
|
-
import { parseSince } from './digest.js';
|
|
9
|
-
describe('parseSince', () => {
|
|
10
|
-
it('accepts a duration shorthand', () => {
|
|
11
|
-
const before = Date.now();
|
|
12
|
-
const result = parseSince('7d');
|
|
13
|
-
expect(result).not.toBeNull();
|
|
14
|
-
expect(result).toBeLessThanOrEqual(before);
|
|
15
|
-
expect(result).toBeGreaterThan(before - 8 * 86_400_000);
|
|
16
|
-
});
|
|
17
|
-
it('accepts a strict ISO 8601 timestamp', () => {
|
|
18
|
-
expect(parseSince('2026-09-17T00:00:00Z')).toBe(Date.parse('2026-09-17T00:00:00Z'));
|
|
19
|
-
});
|
|
20
|
-
it('accepts a bare ISO 8601 date (no time)', () => {
|
|
21
|
-
expect(parseSince('2026-09-17')).toBe(Date.parse('2026-09-17'));
|
|
22
|
-
});
|
|
23
|
-
it('rejects a bare number — not a duration (no h/d suffix), not an ISO date', () => {
|
|
24
|
-
expect(parseSince('1')).toBeNull();
|
|
25
|
-
});
|
|
26
|
-
it('rejects free-text that Date.parse would otherwise loosely accept', () => {
|
|
27
|
-
expect(parseSince('September 1')).toBeNull();
|
|
28
|
-
});
|
|
29
|
-
it('rejects an empty string', () => {
|
|
30
|
-
expect(parseSince('')).toBeNull();
|
|
31
|
-
});
|
|
32
|
-
it('rejects garbage', () => {
|
|
33
|
-
expect(parseSince('not-a-date')).toBeNull();
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
//# sourceMappingURL=digest.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"digest.test.js","sourceRoot":"","sources":["../../src/commands/digest.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACzB,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* pb handshake — generate context files for AI developer tools.
|
|
3
|
-
* Context export wiring (read-only filesystem bridge; GLO-63, DEC-161) — not a product surface.
|
|
4
|
-
*/
|
|
5
|
-
import { type HandshakeReport } from '../formatters/handshake.js';
|
|
6
|
-
import type { WorkspaceHealthResult } from './workspace.js';
|
|
7
|
-
import { classifyDriftBucket, type DriftBucket } from './handshakeDriftClassification.js';
|
|
8
|
-
import { type StartupResolutionSignals } from '../lib/startup-resolution-signals.js';
|
|
9
|
-
import { type SurfaceName } from '../surfaces/registry.js';
|
|
10
|
-
/** Wire-safe alias for a single health gap — derived from the CLI mirror in workspace.ts. */
|
|
11
|
-
export type HealthGap = WorkspaceHealthResult['gaps'][number];
|
|
12
|
-
export declare function runHandshakeInit(options?: {
|
|
13
|
-
level?: string;
|
|
14
|
-
dryRun?: boolean;
|
|
15
|
-
}): Promise<void>;
|
|
16
|
-
interface HandshakeOptions {
|
|
17
|
-
force?: boolean;
|
|
18
|
-
dryRun?: boolean;
|
|
19
|
-
/** When true, actually write files. When false (default), show preview plan only. */
|
|
20
|
-
apply?: boolean;
|
|
21
|
-
level?: string;
|
|
22
|
-
/** When true, suppress all progress output. Used when handshake is called as a sub-step. */
|
|
23
|
-
quiet?: boolean;
|
|
24
|
-
/** Optional caller-provided startup signals, merged with safe local signals. */
|
|
25
|
-
startupSignals?: Partial<StartupResolutionSignals>;
|
|
26
|
-
/** Queryable telemetry attribution for the path that invoked this handshake. */
|
|
27
|
-
invocationPath?: 'session-start' | 'session-close' | 'manual-orient' | 'handshake' | 'unknown';
|
|
28
|
-
/** Target surfaces to write adapter files for. Empty = write all. */
|
|
29
|
-
surfaces?: string[];
|
|
30
|
-
/** WP-421 S3 (#17): true, or non-TTY stdout, bypasses the adopt-or-revert prompt — tampered
|
|
31
|
-
* files go to stderr, a `transition` setup_receipt records the refusal, exit non-zero. */
|
|
32
|
-
noPrompt?: boolean;
|
|
33
|
-
}
|
|
34
|
-
/** Dereference a "PR #N" ref to its changed paths via `gh pr diff <N> --name-only` (F4: server
|
|
35
|
-
* resolver has no git/gh access). Guarded/time-boxed; `run` is injectable for tests. */
|
|
36
|
-
export declare function dereferencePrRefToPaths(cwd: string, prNumber: number, run?: (cwd: string, command: string, timeoutMs: number) => string | undefined): string[];
|
|
37
|
-
/** Injectable runners for deriveHandshakeStartupSignals — lets tests drive git/gh side effects
|
|
38
|
-
* (changed paths, merge-base delta, PR-diff dereference) without real subprocesses. */
|
|
39
|
-
export type HandshakeStartupSignalDeps = {
|
|
40
|
-
/** Run a read-only git command; undefined on failure. Default: runGitText. */
|
|
41
|
-
runGit: (cwd: string, command: string) => string | undefined;
|
|
42
|
-
/** Dereference a PR number to its changed paths (F4). Default: dereferencePrRefToPaths. */
|
|
43
|
-
prDiff: (cwd: string, prNumber: number) => string[];
|
|
44
|
-
};
|
|
45
|
-
export declare function deriveHandshakeStartupSignals(cwd: string, callerSignals?: Partial<StartupResolutionSignals>, deps?: HandshakeStartupSignalDeps): StartupResolutionSignals;
|
|
46
|
-
/** Normalize volatile handshake-only timestamps before comparing generated files — keeps visible
|
|
47
|
-
* timestamps in artifacts while avoiding meaningless rewrites when content is unchanged. */
|
|
48
|
-
export declare function normalizeHandshakeContentForComparison(content: string): string;
|
|
49
|
-
export { classifyDriftBucket, type DriftBucket };
|
|
50
|
-
export interface LeftoverProjection {
|
|
51
|
-
path: string;
|
|
52
|
-
reason: string;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* findLeftoverProjections — WP-379 S5b
|
|
56
|
-
*
|
|
57
|
-
* Lists marker-bearing files under .cursor/rules/, .claude/rules/, .claude/skills/, .codex/skills/
|
|
58
|
-
* (plus the nested .cursor/skills/<name>/SKILL.md layout) that look stale: orphan (no canonical
|
|
59
|
-
* asset), stale case/punctuation variant, or a leftover `.dormant` copy. User-owned (no MARKER)
|
|
60
|
-
* files and unselected `allowedTargets` are never reported.
|
|
61
|
-
*
|
|
62
|
-
* Round 12: stops once `LEFTOVER_FILES_MAX + 1` matches are found across the flat + merged
|
|
63
|
-
* nested-Cursor scan combined — bounds read/enumerate I/O, not just the reported list.
|
|
64
|
-
* `truncated` says more exist beyond the capped, returned `files`.
|
|
65
|
-
*
|
|
66
|
-
* @param cursorSkillNames Cursor-specific, SKILL-kind-only canon (falls back to `assetNames`).
|
|
67
|
-
* @param exactRelativePaths Round 11: exact write-plan paths (forward-slash), exempted from both
|
|
68
|
-
* checks — covers asset-less generated files and a canonical raw name not already normalized.
|
|
69
|
-
*/
|
|
70
|
-
export declare function findLeftoverProjections(cwd: string, assetNames: string[], allowedTargets: Set<SurfaceName>, cursorSkillNames?: string[], exactRelativePaths?: Set<string>): {
|
|
71
|
-
files: LeftoverProjection[];
|
|
72
|
-
truncated: boolean;
|
|
73
|
-
};
|
|
74
|
-
export declare function runHandshake(options?: HandshakeOptions): Promise<HandshakeReport | undefined>;
|
|
75
|
-
export declare const __test: {
|
|
76
|
-
MARKER: string;
|
|
77
|
-
};
|
|
78
|
-
//# sourceMappingURL=handshake.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handshake.d.ts","sourceRoot":"","sources":["../../src/commands/handshake.ts"],"names":[],"mappings":"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"}
|