@harness-nexus/cli 0.1.0-alpha.2 → 0.1.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/daemon/acp/adapters.d.ts.map +1 -1
  2. package/dist/daemon/acp/adapters.js +9 -3
  3. package/dist/daemon/acp/adapters.js.map +1 -1
  4. package/dist/daemon/acp/agent-connection.d.ts +30 -1
  5. package/dist/daemon/acp/agent-connection.d.ts.map +1 -1
  6. package/dist/daemon/acp/agent-connection.js +59 -6
  7. package/dist/daemon/acp/agent-connection.js.map +1 -1
  8. package/dist/daemon/chat.d.ts +9 -1
  9. package/dist/daemon/chat.d.ts.map +1 -1
  10. package/dist/daemon/chat.js +642 -37
  11. package/dist/daemon/chat.js.map +1 -1
  12. package/dist/daemon/client.d.ts +10 -2
  13. package/dist/daemon/client.d.ts.map +1 -1
  14. package/dist/daemon/client.js +99 -23
  15. package/dist/daemon/client.js.map +1 -1
  16. package/dist/daemon/config-view.d.ts +42 -0
  17. package/dist/daemon/config-view.d.ts.map +1 -0
  18. package/dist/daemon/config-view.js +159 -0
  19. package/dist/daemon/config-view.js.map +1 -0
  20. package/dist/daemon/dsh-sessions.d.ts +161 -0
  21. package/dist/daemon/dsh-sessions.d.ts.map +1 -0
  22. package/dist/daemon/dsh-sessions.js +674 -0
  23. package/dist/daemon/dsh-sessions.js.map +1 -0
  24. package/dist/daemon/dsh-tap/index.mjs +99 -0
  25. package/dist/daemon/dsh-tap-listener.d.ts +62 -0
  26. package/dist/daemon/dsh-tap-listener.d.ts.map +1 -0
  27. package/dist/daemon/dsh-tap-listener.js +196 -0
  28. package/dist/daemon/dsh-tap-listener.js.map +1 -0
  29. package/dist/daemon/jobs.d.ts +8 -5
  30. package/dist/daemon/jobs.d.ts.map +1 -1
  31. package/dist/daemon/jobs.js +28 -8
  32. package/dist/daemon/jobs.js.map +1 -1
  33. package/dist/daemon/runtime-config.d.ts +34 -0
  34. package/dist/daemon/runtime-config.d.ts.map +1 -0
  35. package/dist/daemon/runtime-config.js +343 -0
  36. package/dist/daemon/runtime-config.js.map +1 -0
  37. package/dist/daemon/runtime.d.ts +49 -0
  38. package/dist/daemon/runtime.d.ts.map +1 -0
  39. package/dist/daemon/runtime.js +218 -0
  40. package/dist/daemon/runtime.js.map +1 -0
  41. package/dist/daemon/sessions.d.ts +21 -0
  42. package/dist/daemon/sessions.d.ts.map +1 -0
  43. package/dist/daemon/sessions.js +125 -0
  44. package/dist/daemon/sessions.js.map +1 -0
  45. package/dist/daemon/workspace.d.ts +3 -0
  46. package/dist/daemon/workspace.d.ts.map +1 -0
  47. package/dist/daemon/workspace.js +27 -0
  48. package/dist/daemon/workspace.js.map +1 -0
  49. package/dist/install/adapters/deepseek.d.ts +4 -0
  50. package/dist/install/adapters/deepseek.d.ts.map +1 -1
  51. package/dist/install/adapters/deepseek.js +4 -2
  52. package/dist/install/adapters/deepseek.js.map +1 -1
  53. package/dist/inventory/common.d.ts +2 -0
  54. package/dist/inventory/common.d.ts.map +1 -1
  55. package/dist/inventory/common.js.map +1 -1
  56. package/dist/inventory/runtime.d.ts +40 -0
  57. package/dist/inventory/runtime.d.ts.map +1 -0
  58. package/dist/inventory/runtime.js +114 -0
  59. package/dist/inventory/runtime.js.map +1 -0
  60. package/dist/inventory/scanners/claude-code.d.ts +2 -0
  61. package/dist/inventory/scanners/claude-code.d.ts.map +1 -1
  62. package/dist/inventory/scanners/claude-code.js +103 -39
  63. package/dist/inventory/scanners/claude-code.js.map +1 -1
  64. package/package.json +6 -6
@@ -0,0 +1,161 @@
1
+ import type { ChatStreamEvent, HistoryItem } from '@harness-nexus/shared';
2
+ export type FrameDecoder = (frame: Buffer) => Buffer;
3
+ /** The native `zlib.zstdDecompressSync`, or null on Node < 22.15. */
4
+ export declare function nativeZstd(): FrameDecoder | null;
5
+ /** Slice a concatenated-zstd buffer into its frames (magic scan). */
6
+ export declare function splitZstdFrames(buf: Buffer): Buffer[];
7
+ /**
8
+ * Decode every frame and parse the JSONL entries. Undecodable frames (a magic
9
+ * hit inside compressed data — ~2^-32 per position) and non-JSON lines are
10
+ * skipped, never fatal. Entries are capped so a runaway transcript can't
11
+ * exhaust memory.
12
+ */
13
+ export declare function decodeTranscript(buf: Buffer, decompress: FrameDecoder, maxEntries?: number): Record<string, unknown>[];
14
+ export interface DshSessionSummary {
15
+ sessionId: string;
16
+ cwd: string;
17
+ title: string | null;
18
+ createdAt: string | null;
19
+ updatedAt: string | null;
20
+ /** The model route the session pinned (`request/header.config.model`). */
21
+ model: string | null;
22
+ }
23
+ interface DshHeader {
24
+ createdAt?: unknown;
25
+ cwd?: unknown;
26
+ delegationDepth?: unknown;
27
+ parentSession?: unknown;
28
+ }
29
+ /**
30
+ * Header + derived title + pinned model from the FRONT of a transcript
31
+ * (dsh's own `session/list` exposes none of these). Stops as soon as all are
32
+ * found; bounded read so a huge transcript costs at most `maxBytes`. NB: the
33
+ * `session` HEADER entry carries its fields at the TOP level (no `data`
34
+ * wrapper), unlike every other entry type.
35
+ */
36
+ export declare function scanSummary(buf: Buffer, decompress: FrameDecoder, maxBytes?: number): {
37
+ header: DshHeader | null;
38
+ title: string | null;
39
+ model: string | null;
40
+ hasTurn: boolean;
41
+ };
42
+ /**
43
+ * The model ids of OUR managed provider region in `~/.dsh/settings.yaml`
44
+ * (the W3 writer's own format — a `models:` list of `- id:` entries). Null
45
+ * when the region is absent/unparseable: the caller then annotates nothing.
46
+ */
47
+ export declare function currentCatalogModels(settingsYaml: string): Set<string> | null;
48
+ export interface DshListFs {
49
+ readdir: (path: string) => string[];
50
+ readFile: (path: string) => Buffer;
51
+ stat: (path: string) => {
52
+ mtimeMs: number;
53
+ };
54
+ }
55
+ /**
56
+ * List dsh's ROOT sessions (subagent sessions carry `parentSession`/depth and
57
+ * are dsh's own resume-exclusions). Pure given the fs shims; newest first.
58
+ */
59
+ export declare function dshListSessions(sessionsDir: string, fs: DshListFs, decompress: FrameDecoder, opts?: {
60
+ maxSessions?: number;
61
+ }): DshSessionSummary[];
62
+ type UnknownRecord = Record<string, unknown>;
63
+ /** The usage marker of a verbatim `assistant/chunk` row (history path). */
64
+ export declare function usageFromChunk(entry: UnknownRecord): ChatStreamEvent | null;
65
+ /**
66
+ * The stateful LIVE mapper: one dsh transcript entry → 0..n stream events.
67
+ * Mirrors the semantics of dsh's own in-process bridge mapper (reference:
68
+ * `updates.js` `createEventMapper`, engine/storage shapes verified against
69
+ * dsh 0.1.2-rc.1 — the exact rig version):
70
+ *
71
+ * - Deltas arrive in TWO on-disk shapes: packed `text-chunks`/
72
+ * `reasoning-chunks` rows (runs of ≥3 seq-contiguous same-block deltas) and
73
+ * verbatim `assistant/chunk` events (shorter runs — the codec's MIN_RUN=3
74
+ * falls through). Both map; skipping either would silently drop content.
75
+ * - Committed `assistant/message` carries the step's dedup key: if deltas for
76
+ * that `turn:step` were already emitted, ONLY the usage rides through
77
+ * (re-sending the full block would double-render); if none were (late tail
78
+ * attach, block-only adapters), the complete blocks are emitted — the wire's
79
+ * committed chunk is suppressed while the tail is live, so this fallback is
80
+ * the only copy. Tool-call blocks are skipped: the `tool/call` row owns them.
81
+ * - Turn markers and user inputs never map live — the prompt response owns
82
+ * turn_result, and the browser echoes the user's own prompt.
83
+ */
84
+ export type DshLiveMapper = (entry: UnknownRecord) => ChatStreamEvent[];
85
+ export declare function createDshLiveMapper(): DshLiveMapper;
86
+ /**
87
+ * Map dsh transcript entries onto history items (user blocks + ordinary
88
+ * stream events — ONE fold path in the browser). Genuine user turns are the
89
+ * `agent/inbox/spliced` inserts; `user/message` echoes and the synthesized
90
+ * runtime-context messages are skipped.
91
+ */
92
+ export declare function dshHistoryItems(entries: UnknownRecord[]): HistoryItem[];
93
+ /** Locate a session's transcript by id across the slug dirs (null = absent). */
94
+ export declare function findTranscript(sessionsDir: string, sessionId: string, readdir: (path: string) => string[]): string | null;
95
+ /** The fs surface `TranscriptTail` needs (injectable for tests). */
96
+ export interface TailFs {
97
+ /** Current byte size, or null while the file is absent. */
98
+ size(path: string): number | null;
99
+ /** The bytes from `start` to the current end (may grow mid-call — fine). */
100
+ readEnd(path: string, start: number): Buffer;
101
+ }
102
+ /** Runtime knobs for `TranscriptTail`. */
103
+ export interface TailOptions {
104
+ /** Poll interval (default 250ms — dsh flushes write batches ~100–300ms apart). */
105
+ intervalMs?: number;
106
+ /**
107
+ * Fired when the file corrupts mid-stream (a bounded frame that fails to
108
+ * decode): the tail stops itself and the caller should fall back to the
109
+ * adapter's committed chunks (wire suppression must lift).
110
+ */
111
+ onFatal?: (reason: string) => void;
112
+ }
113
+ /**
114
+ * Tails a dsh transcript for LIVE token streaming. Ground truth (dsh
115
+ * 0.1.2-rc.1 write path): every engine `assistant/chunk` event rides the
116
+ * session bus into a bounded write-behind batch (~100–300ms window) and lands
117
+ * as one zstd frame per batch — so polling the file yields token batches
118
+ * roughly one write window behind the model, while dsh's ACP adapter stays
119
+ * silent until commit. New bytes are split into frames, decoded, and mapped
120
+ * through a stateful `createDshLiveMapper` (packed rows AND verbatim chunk
121
+ * events, with the `turn:step` committed-dedup — see its doc).
122
+ *
123
+ * A trailing frame cut mid-write decodes only once its remaining bytes
124
+ * arrive: the last undecodable slice is buffered for the next poll (the
125
+ * writer completes it on the next batch or truncates it back on rollback).
126
+ * `start()` skips existing bytes (history was already rendered);
127
+ * `flush()` drains once more so a turn's final tokens stay ordered before
128
+ * its turn_result. A BOUNDED frame that fails to decode is corruption —
129
+ * `onFatal` fires and the tail stops (the committed path takes over).
130
+ */
131
+ export declare class TranscriptTail {
132
+ private readonly file;
133
+ private readonly fs;
134
+ private readonly decompress;
135
+ private readonly onEvent;
136
+ private readonly opts;
137
+ private pending;
138
+ private timer;
139
+ private stopped;
140
+ private offset;
141
+ private readonly mapper;
142
+ /** Wall-clock of the last `turn/end` row seen (0 = none). */
143
+ private lastTurnEndAt;
144
+ constructor(file: string, fs: TailFs, decompress: FrameDecoder, onEvent: (event: ChatStreamEvent) => void, opts?: TailOptions);
145
+ /** Begin polling. `replayFromBeginning` re-maps the whole file instead of
146
+ * skipping existing bytes — valid ONLY when nothing in it was ever
147
+ * rendered (a lazily-materialized new-session transcript attached mid-turn:
148
+ * replaying recovers the deltas that landed before the attach; the
149
+ * caller guarantees no earlier turn ran through the committed path). */
150
+ start(replayFromBeginning?: boolean): void;
151
+ /** Whether a `turn/end` row landed since `since` (the settle signal). */
152
+ turnEndSeenSince(since: number): boolean;
153
+ /** One synchronous drain (call before settling a turn). */
154
+ flush(): void;
155
+ stop(): void;
156
+ private poll;
157
+ private drain;
158
+ private emitLines;
159
+ }
160
+ export {};
161
+ //# sourceMappingURL=dsh-sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dsh-sessions.d.ts","sourceRoot":"","sources":["../../src/daemon/dsh-sessions.ts"],"names":[],"mappings":"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"}