@flyingrobots/graft 0.7.0 → 0.7.1
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/CHANGELOG.md +13 -0
- package/README.md +0 -1
- package/bin/graft.js +26 -26
- package/dist/cli/init-client-config.d.ts.map +1 -1
- package/dist/cli/init-client-config.js +40 -4
- package/dist/cli/init-client-config.js.map +1 -1
- package/dist/cli/init-model.js +2 -2
- package/dist/cli/init-model.js.map +1 -1
- package/dist/cli/json-document.d.ts +1 -0
- package/dist/cli/json-document.d.ts.map +1 -1
- package/dist/cli/json-document.js +3 -0
- package/dist/cli/json-document.js.map +1 -1
- package/dist/hooks/posttooluse-read.js +1 -1
- package/dist/hooks/posttooluse-read.js.map +1 -1
- package/dist/hooks/pretooluse-read.js +1 -1
- package/dist/hooks/pretooluse-read.js.map +1 -1
- package/dist/mcp/daemon-worker-child-pool.d.ts +2 -0
- package/dist/mcp/daemon-worker-child-pool.d.ts.map +1 -1
- package/dist/mcp/daemon-worker-child-pool.js +10 -3
- package/dist/mcp/daemon-worker-child-pool.js.map +1 -1
- package/dist/mcp/daemon-worker-pool.d.ts +1 -1
- package/dist/mcp/daemon-worker-pool.d.ts.map +1 -1
- package/dist/mcp/daemon-worker-pool.js +1 -1
- package/dist/mcp/daemon-worker-pool.js.map +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +3 -1
- package/dist/version.js.map +1 -1
- package/docs/SETUP.md +11 -7
- package/package.json +9 -4
- package/src/adapters/canonical-json.ts +0 -56
- package/src/adapters/json-text-decoder.ts +0 -11
- package/src/adapters/node-fs.ts +0 -43
- package/src/adapters/node-git.ts +0 -47
- package/src/adapters/node-paths.ts +0 -35
- package/src/adapters/node-process-runner.ts +0 -27
- package/src/adapters/repo-paths.ts +0 -63
- package/src/adapters/rotating-ndjson-log.ts +0 -66
- package/src/api/index.ts +0 -107
- package/src/api/repo-local-graft.ts +0 -21
- package/src/api/repo-workspace.ts +0 -34
- package/src/api/tool-bridge.ts +0 -22
- package/src/cli/activity-render.ts +0 -112
- package/src/cli/cli-error.ts +0 -192
- package/src/cli/command-parser.ts +0 -484
- package/src/cli/daemon-status-model.ts +0 -238
- package/src/cli/daemon-status-render.ts +0 -102
- package/src/cli/daemon-status.ts +0 -100
- package/src/cli/entrypoint.ts +0 -18
- package/src/cli/git-graft-enhance-model.ts +0 -131
- package/src/cli/git-graft-enhance-render.ts +0 -33
- package/src/cli/git-graft-enhance.ts +0 -54
- package/src/cli/index-cmd.ts +0 -90
- package/src/cli/index-model.ts +0 -75
- package/src/cli/init-bootstrap.ts +0 -47
- package/src/cli/init-client-config.ts +0 -428
- package/src/cli/init-model.ts +0 -284
- package/src/cli/init-render.ts +0 -54
- package/src/cli/init-target-hooks.ts +0 -93
- package/src/cli/init.ts +0 -124
- package/src/cli/json-document.ts +0 -155
- package/src/cli/local-history-dag-model.ts +0 -437
- package/src/cli/local-history-dag-render.ts +0 -133
- package/src/cli/local-history-dag.ts +0 -103
- package/src/cli/main.ts +0 -197
- package/src/cli/migrate-local-history.ts +0 -119
- package/src/cli/peer-command.ts +0 -60
- package/src/contracts/capabilities.ts +0 -540
- package/src/contracts/causal-ontology.ts +0 -627
- package/src/contracts/causal-surface-next-action.ts +0 -18
- package/src/contracts/json-object.ts +0 -18
- package/src/contracts/mcp-runtime.ts +0 -16
- package/src/contracts/output-schema-cli.ts +0 -103
- package/src/contracts/output-schema-fragments.ts +0 -881
- package/src/contracts/output-schema-mcp.ts +0 -501
- package/src/contracts/output-schema-meta.ts +0 -119
- package/src/contracts/output-schemas.ts +0 -1524
- package/src/git/diff.ts +0 -161
- package/src/git/target-git-hook-bootstrap.ts +0 -56
- package/src/guards/stream-boundary.ts +0 -110
- package/src/hooks/posttooluse-read.ts +0 -54
- package/src/hooks/pretooluse-read.ts +0 -52
- package/src/hooks/read-governor.ts +0 -95
- package/src/hooks/read-messages.ts +0 -53
- package/src/hooks/shared.ts +0 -168
- package/src/index.ts +0 -1
- package/src/mcp/burden.ts +0 -132
- package/src/mcp/cache.ts +0 -7
- package/src/mcp/cached-file.ts +0 -1
- package/src/mcp/context.ts +0 -150
- package/src/mcp/control-plane/authz-storage.ts +0 -129
- package/src/mcp/control-plane/session-registry.ts +0 -115
- package/src/mcp/control-plane/status-projection.ts +0 -76
- package/src/mcp/control-plane/types.ts +0 -144
- package/src/mcp/daemon-bootstrap.ts +0 -100
- package/src/mcp/daemon-control-plane.ts +0 -310
- package/src/mcp/daemon-job-scheduler.ts +0 -279
- package/src/mcp/daemon-repos.ts +0 -99
- package/src/mcp/daemon-server.ts +0 -172
- package/src/mcp/daemon-session-host.ts +0 -234
- package/src/mcp/daemon-stdio-bridge.ts +0 -262
- package/src/mcp/daemon-worker-child-pool.ts +0 -213
- package/src/mcp/daemon-worker-inline-pool.ts +0 -46
- package/src/mcp/daemon-worker-pool.ts +0 -7
- package/src/mcp/daemon-worker-process.ts +0 -52
- package/src/mcp/daemon-worker-types.ts +0 -66
- package/src/mcp/metrics.ts +0 -176
- package/src/mcp/monitor-health.ts +0 -83
- package/src/mcp/monitor-persistence.ts +0 -54
- package/src/mcp/monitor-tick-job.ts +0 -153
- package/src/mcp/monitor-types.ts +0 -103
- package/src/mcp/persisted-local-history-graph.ts +0 -592
- package/src/mcp/persisted-local-history-policy.ts +0 -501
- package/src/mcp/persisted-local-history-views.ts +0 -250
- package/src/mcp/persisted-local-history.ts +0 -1621
- package/src/mcp/persistent-monitor-runtime.ts +0 -482
- package/src/mcp/policy.ts +0 -75
- package/src/mcp/receipt.ts +0 -201
- package/src/mcp/repo-concurrency.ts +0 -392
- package/src/mcp/repo-overview/filter.ts +0 -44
- package/src/mcp/repo-overview/types.ts +0 -63
- package/src/mcp/repo-overview/view-projection.ts +0 -90
- package/src/mcp/repo-state-git.ts +0 -247
- package/src/mcp/repo-state-observation.ts +0 -203
- package/src/mcp/repo-state-transition.ts +0 -151
- package/src/mcp/repo-state-types.ts +0 -107
- package/src/mcp/repo-state.ts +0 -146
- package/src/mcp/repo-tool-job.ts +0 -102
- package/src/mcp/repo-tool-worker-context.ts +0 -215
- package/src/mcp/repo-workspace.ts +0 -21
- package/src/mcp/run-capture-config.ts +0 -33
- package/src/mcp/runtime-causal-context.ts +0 -72
- package/src/mcp/runtime-observability.ts +0 -217
- package/src/mcp/runtime-staged-target.ts +0 -161
- package/src/mcp/runtime-workspace-overlay.ts +0 -255
- package/src/mcp/secret-scrub.ts +0 -89
- package/src/mcp/semantic-transition-guidance.ts +0 -60
- package/src/mcp/semantic-transition-summary.ts +0 -130
- package/src/mcp/server-context.ts +0 -236
- package/src/mcp/server-invocation.ts +0 -388
- package/src/mcp/server-tool-access.ts +0 -148
- package/src/mcp/server.ts +0 -270
- package/src/mcp/stdio-server.ts +0 -26
- package/src/mcp/stdio.ts +0 -3
- package/src/mcp/tool-registry.ts +0 -98
- package/src/mcp/tools/activity-view.ts +0 -325
- package/src/mcp/tools/budget.ts +0 -23
- package/src/mcp/tools/causal-attach.ts +0 -67
- package/src/mcp/tools/causal-status.ts +0 -58
- package/src/mcp/tools/changed-since.ts +0 -71
- package/src/mcp/tools/code-find.ts +0 -192
- package/src/mcp/tools/code-refs.ts +0 -470
- package/src/mcp/tools/code-show.ts +0 -289
- package/src/mcp/tools/daemon-monitors.ts +0 -14
- package/src/mcp/tools/daemon-repos.ts +0 -22
- package/src/mcp/tools/daemon-sessions.ts +0 -14
- package/src/mcp/tools/daemon-status.ts +0 -12
- package/src/mcp/tools/diagnostic-models.ts +0 -97
- package/src/mcp/tools/doctor.ts +0 -83
- package/src/mcp/tools/explain.ts +0 -84
- package/src/mcp/tools/export-surface-diff.ts +0 -26
- package/src/mcp/tools/file-outline.ts +0 -67
- package/src/mcp/tools/git-files.ts +0 -73
- package/src/mcp/tools/graft-diff.ts +0 -35
- package/src/mcp/tools/graft-edit.ts +0 -276
- package/src/mcp/tools/knowledge-map.ts +0 -34
- package/src/mcp/tools/map-collector.ts +0 -338
- package/src/mcp/tools/map.ts +0 -185
- package/src/mcp/tools/monitor-nudge.ts +0 -19
- package/src/mcp/tools/monitor-pause.ts +0 -18
- package/src/mcp/tools/monitor-resume.ts +0 -18
- package/src/mcp/tools/monitor-start.ts +0 -20
- package/src/mcp/tools/monitor-stop.ts +0 -18
- package/src/mcp/tools/precision-live.ts +0 -158
- package/src/mcp/tools/precision-match.ts +0 -54
- package/src/mcp/tools/precision-paths.ts +0 -59
- package/src/mcp/tools/precision-query.ts +0 -127
- package/src/mcp/tools/precision-show.ts +0 -86
- package/src/mcp/tools/precision-visibility.ts +0 -44
- package/src/mcp/tools/precision-warp.ts +0 -101
- package/src/mcp/tools/precision.ts +0 -21
- package/src/mcp/tools/read-range.ts +0 -28
- package/src/mcp/tools/refactor-difficulty.ts +0 -42
- package/src/mcp/tools/run-capture.ts +0 -149
- package/src/mcp/tools/safe-read.ts +0 -148
- package/src/mcp/tools/since.ts +0 -53
- package/src/mcp/tools/state.ts +0 -39
- package/src/mcp/tools/stats.ts +0 -24
- package/src/mcp/tools/structural-blame.ts +0 -55
- package/src/mcp/tools/structural-churn.ts +0 -28
- package/src/mcp/tools/structural-log.ts +0 -41
- package/src/mcp/tools/structural-review.ts +0 -63
- package/src/mcp/tools/workspace-authorizations.ts +0 -14
- package/src/mcp/tools/workspace-authorize.ts +0 -20
- package/src/mcp/tools/workspace-bind.ts +0 -25
- package/src/mcp/tools/workspace-rebind.ts +0 -25
- package/src/mcp/tools/workspace-revoke.ts +0 -18
- package/src/mcp/tools/workspace-status.ts +0 -12
- package/src/mcp/warp-pool.ts +0 -36
- package/src/mcp/workspace-read-observation-model.ts +0 -48
- package/src/mcp/workspace-read-observation.ts +0 -103
- package/src/mcp/workspace-router-capability.ts +0 -32
- package/src/mcp/workspace-router-history.ts +0 -233
- package/src/mcp/workspace-router-model.ts +0 -131
- package/src/mcp/workspace-router-resolution.ts +0 -71
- package/src/mcp/workspace-router-runtime.ts +0 -246
- package/src/mcp/workspace-router.ts +0 -688
- package/src/metrics/logger.ts +0 -40
- package/src/metrics/types.ts +0 -40
- package/src/operations/adaptive-projection.ts +0 -54
- package/src/operations/agent-handoff.ts +0 -59
- package/src/operations/cached-file.ts +0 -40
- package/src/operations/capture-range.ts +0 -64
- package/src/operations/conversation-primer.ts +0 -82
- package/src/operations/cross-session-resume.ts +0 -104
- package/src/operations/deterministic-replay.ts +0 -143
- package/src/operations/diff-identity.ts +0 -127
- package/src/operations/export-surface-diff.ts +0 -355
- package/src/operations/file-outline.ts +0 -48
- package/src/operations/footprint-parallelism.ts +0 -98
- package/src/operations/graft-diff.ts +0 -169
- package/src/operations/horizon-of-readability.ts +0 -60
- package/src/operations/import-reference-impact.ts +0 -143
- package/src/operations/knowledge-map.ts +0 -96
- package/src/operations/observation-cache.ts +0 -165
- package/src/operations/projection-safety.ts +0 -111
- package/src/operations/read-range.ts +0 -64
- package/src/operations/repo-workspace.ts +0 -339
- package/src/operations/result-dto.ts +0 -23
- package/src/operations/safe-read.ts +0 -118
- package/src/operations/semantic-drift.ts +0 -70
- package/src/operations/session-filtration.ts +0 -76
- package/src/operations/session-replay.ts +0 -73
- package/src/operations/sludge-detector.ts +0 -356
- package/src/operations/state.ts +0 -66
- package/src/operations/structural-blame.ts +0 -197
- package/src/operations/structural-review.ts +0 -317
- package/src/operations/structured-buffer-compare.ts +0 -429
- package/src/operations/structured-buffer-model.ts +0 -456
- package/src/operations/structured-buffer-query.ts +0 -794
- package/src/operations/structured-buffer.ts +0 -181
- package/src/operations/teaching-hints.ts +0 -52
- package/src/parser/diff.ts +0 -320
- package/src/parser/lang.ts +0 -71
- package/src/parser/markdown.ts +0 -197
- package/src/parser/outline.ts +0 -316
- package/src/parser/runtime.ts +0 -71
- package/src/parser/types.ts +0 -75
- package/src/policy/evaluate.ts +0 -178
- package/src/policy/graftignore.ts +0 -6
- package/src/policy/types.ts +0 -87
- package/src/ports/codec.ts +0 -13
- package/src/ports/filesystem.ts +0 -18
- package/src/ports/git.ts +0 -16
- package/src/ports/guards.ts +0 -68
- package/src/ports/paths.ts +0 -22
- package/src/ports/process-runner.ts +0 -22
- package/src/release/security-gate.ts +0 -102
- package/src/session/tracker.ts +0 -145
- package/src/session/types.ts +0 -23
- package/src/version.ts +0 -3
- package/src/warp/ast-emitter.ts +0 -133
- package/src/warp/ast-import-resolver.ts +0 -333
- package/src/warp/commit-meta.ts +0 -19
- package/src/warp/context.ts +0 -48
- package/src/warp/dead-symbols.ts +0 -174
- package/src/warp/drift-sentinel.ts +0 -101
- package/src/warp/index-head.ts +0 -348
- package/src/warp/observers.ts +0 -101
- package/src/warp/open.ts +0 -67
- package/src/warp/outline-diff-trailer.ts +0 -100
- package/src/warp/plumbing.d.ts +0 -24
- package/src/warp/refactor-difficulty.ts +0 -257
- package/src/warp/references.ts +0 -77
- package/src/warp/stale-docs.ts +0 -210
- package/src/warp/structural-drift-detection.ts +0 -97
- package/src/warp/structural-queries.ts +0 -258
- package/src/warp/symbol-timeline.ts +0 -209
- package/src/warp/traverse-hydrate.ts +0 -61
- package/src/warp/warp-reference-count.ts +0 -47
- package/src/warp/warp-structural-blame.ts +0 -65
- package/src/warp/warp-structural-churn.ts +0 -309
- package/src/warp/warp-structural-log.ts +0 -149
- package/src/warp/writer-id.ts +0 -30
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
// ---------------------------------------------------------------------------
|
|
2
|
-
// WARP-based Structural Log — replaces git log SHA walking
|
|
3
|
-
// ---------------------------------------------------------------------------
|
|
4
|
-
|
|
5
|
-
import type { QueryResultV1 } from "@git-stunts/git-warp";
|
|
6
|
-
import type { WarpContext } from "./context.js";
|
|
7
|
-
import { observeGraph } from "./context.js";
|
|
8
|
-
|
|
9
|
-
/** A symbol that was added, removed, or changed in a commit. */
|
|
10
|
-
export interface StructuralLogSymbolChange {
|
|
11
|
-
readonly name: string;
|
|
12
|
-
readonly kind: string;
|
|
13
|
-
readonly signature?: string | undefined;
|
|
14
|
-
readonly exported: boolean;
|
|
15
|
-
readonly filePath: string;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export interface StructuralLogEntry {
|
|
19
|
-
readonly sha: string;
|
|
20
|
-
readonly message: string;
|
|
21
|
-
readonly author: string;
|
|
22
|
-
readonly date: string;
|
|
23
|
-
readonly symbols: {
|
|
24
|
-
readonly added: readonly StructuralLogSymbolChange[];
|
|
25
|
-
readonly removed: readonly StructuralLogSymbolChange[];
|
|
26
|
-
readonly changed: readonly StructuralLogSymbolChange[];
|
|
27
|
-
};
|
|
28
|
-
readonly summary: string;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/** Options for WARP-based structural log. */
|
|
32
|
-
export interface WarpLogOptions {
|
|
33
|
-
readonly limit?: number;
|
|
34
|
-
readonly path?: string;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Produce a structural log entirely from the WARP graph.
|
|
39
|
-
*
|
|
40
|
-
* Walks commit nodes in reverse tick order (most recent first),
|
|
41
|
-
* traverses outgoing adds/changes/removes edges per commit to
|
|
42
|
-
* collect symbol changes. Zero git subprocess calls.
|
|
43
|
-
*/
|
|
44
|
-
export async function structuralLogFromGraph(
|
|
45
|
-
ctx: WarpContext,
|
|
46
|
-
options?: WarpLogOptions,
|
|
47
|
-
): Promise<readonly StructuralLogEntry[]> {
|
|
48
|
-
const limit = options?.limit ?? 20;
|
|
49
|
-
const pathFilter = options?.path;
|
|
50
|
-
|
|
51
|
-
// Query all commit nodes
|
|
52
|
-
const obs = await observeGraph(ctx, {
|
|
53
|
-
match: ["commit:*", "sym:*"],
|
|
54
|
-
expose: ["sha", "tick", "message", "author", "date", "name", "kind", "signature", "exported"],
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
const commitResult = await obs.query()
|
|
58
|
-
.match("commit:*")
|
|
59
|
-
.select(["id", "props"])
|
|
60
|
-
.run() as QueryResultV1;
|
|
61
|
-
|
|
62
|
-
const commits: { id: string; sha: string; tick: number; message: string; author: string; date: string }[] = [];
|
|
63
|
-
for (const node of commitResult.nodes) {
|
|
64
|
-
if (node.id === undefined) continue;
|
|
65
|
-
const props = node.props ?? {};
|
|
66
|
-
commits.push({
|
|
67
|
-
id: node.id,
|
|
68
|
-
sha: typeof props["sha"] === "string" ? props["sha"] : node.id.slice("commit:".length),
|
|
69
|
-
tick: typeof props["tick"] === "number" ? props["tick"] : 0,
|
|
70
|
-
message: typeof props["message"] === "string" ? props["message"] : "",
|
|
71
|
-
author: typeof props["author"] === "string" ? props["author"] : "",
|
|
72
|
-
date: typeof props["date"] === "string" ? props["date"] : "",
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
if (commits.length === 0) return [];
|
|
77
|
-
|
|
78
|
-
// Sort by tick descending (most recent first)
|
|
79
|
-
commits.sort((a, b) => b.tick - a.tick);
|
|
80
|
-
const scoped = commits.slice(0, limit);
|
|
81
|
-
|
|
82
|
-
// For each commit, traverse edges to get symbol changes
|
|
83
|
-
const edgeLabels = [
|
|
84
|
-
{ label: "adds", key: "added" },
|
|
85
|
-
{ label: "changes", key: "changed" },
|
|
86
|
-
{ label: "removes", key: "removed" },
|
|
87
|
-
] as const;
|
|
88
|
-
|
|
89
|
-
const entries: StructuralLogEntry[] = [];
|
|
90
|
-
|
|
91
|
-
for (const commit of scoped) {
|
|
92
|
-
const added: StructuralLogSymbolChange[] = [];
|
|
93
|
-
const changed: StructuralLogSymbolChange[] = [];
|
|
94
|
-
const removed: StructuralLogSymbolChange[] = [];
|
|
95
|
-
|
|
96
|
-
for (const { label, key } of edgeLabels) {
|
|
97
|
-
const symIds = await obs.traverse.bfs(commit.id, {
|
|
98
|
-
dir: "out",
|
|
99
|
-
labelFilter: label,
|
|
100
|
-
maxDepth: 1,
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
for (const symId of symIds) {
|
|
104
|
-
if (!symId.startsWith("sym:")) continue;
|
|
105
|
-
|
|
106
|
-
const withoutPrefix = symId.slice("sym:".length);
|
|
107
|
-
const lastColon = withoutPrefix.lastIndexOf(":");
|
|
108
|
-
if (lastColon === -1) continue;
|
|
109
|
-
|
|
110
|
-
const filePath = withoutPrefix.slice(0, lastColon);
|
|
111
|
-
const symbolName = withoutPrefix.slice(lastColon + 1);
|
|
112
|
-
|
|
113
|
-
if (pathFilter !== undefined && !filePath.startsWith(pathFilter)) continue;
|
|
114
|
-
|
|
115
|
-
const symProps = await obs.getNodeProps(symId);
|
|
116
|
-
const kind = typeof symProps?.["kind"] === "string" ? symProps["kind"] : "unknown";
|
|
117
|
-
const signature = typeof symProps?.["signature"] === "string" ? symProps["signature"] : undefined;
|
|
118
|
-
const exported = typeof symProps?.["exported"] === "boolean" ? symProps["exported"] : false;
|
|
119
|
-
|
|
120
|
-
const change: StructuralLogSymbolChange = {
|
|
121
|
-
name: symbolName,
|
|
122
|
-
kind,
|
|
123
|
-
signature,
|
|
124
|
-
exported,
|
|
125
|
-
filePath,
|
|
126
|
-
};
|
|
127
|
-
|
|
128
|
-
if (key === "added") added.push(change);
|
|
129
|
-
else if (key === "changed") changed.push(change);
|
|
130
|
-
else removed.push(change);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
const totalChanges = added.length + changed.length + removed.length;
|
|
135
|
-
|
|
136
|
-
entries.push({
|
|
137
|
-
sha: commit.sha,
|
|
138
|
-
author: commit.author,
|
|
139
|
-
date: commit.date,
|
|
140
|
-
message: commit.message,
|
|
141
|
-
symbols: { added, removed, changed },
|
|
142
|
-
summary: totalChanges === 0
|
|
143
|
-
? "No structural changes."
|
|
144
|
-
: `${String(added.length)} added, ${String(changed.length)} changed, ${String(removed.length)} removed.`,
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
return entries;
|
|
149
|
-
}
|
package/src/warp/writer-id.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import * as crypto from "node:crypto";
|
|
2
|
-
|
|
3
|
-
export const DEFAULT_WARP_WRITER_ID = "graft";
|
|
4
|
-
|
|
5
|
-
function sanitizeSegment(input: string): string {
|
|
6
|
-
const normalized = input
|
|
7
|
-
.trim()
|
|
8
|
-
.toLowerCase()
|
|
9
|
-
.replace(/[^a-z0-9_-]+/g, "_")
|
|
10
|
-
.replace(/^_+|_+$/g, "");
|
|
11
|
-
return normalized.length > 0 ? normalized : "lane";
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export function buildWarpWriterId(kind: string, scope?: string): string {
|
|
15
|
-
const lane = sanitizeSegment(kind);
|
|
16
|
-
if (scope === undefined || scope.trim().length === 0) {
|
|
17
|
-
return `graft_${lane}`;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
const digest = crypto.createHash("sha256").update(scope).digest("hex").slice(0, 12);
|
|
21
|
-
return `graft_${lane}_${digest}`;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export function buildSessionWarpWriterId(sessionId: string): string {
|
|
25
|
-
return buildWarpWriterId("session", sessionId);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export function buildMonitorWarpWriterId(repoId: string): string {
|
|
29
|
-
return buildWarpWriterId("monitor", repoId);
|
|
30
|
-
}
|