@gencode/uni 0.3.1 → 0.4.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 +26 -0
- package/README.md +104 -0
- package/dist/shared/src/index.d.ts +1 -1
- package/dist/shared/src/index.d.ts.map +1 -1
- package/dist/shared/src/index.js.map +1 -1
- package/dist/shared/src/run-events.d.ts +10 -0
- package/dist/shared/src/run-events.d.ts.map +1 -1
- package/dist/shared/src/session.d.ts +15 -0
- package/dist/shared/src/session.d.ts.map +1 -1
- package/dist/uni/src/artifacts/accumulator.d.ts +17 -0
- package/dist/uni/src/artifacts/accumulator.d.ts.map +1 -0
- package/dist/uni/src/artifacts/accumulator.js +73 -0
- package/dist/uni/src/artifacts/accumulator.js.map +1 -0
- package/dist/uni/src/artifacts/parser.d.ts +14 -0
- package/dist/uni/src/artifacts/parser.d.ts.map +1 -0
- package/dist/uni/src/artifacts/parser.js +151 -0
- package/dist/uni/src/artifacts/parser.js.map +1 -0
- package/dist/uni/src/artifacts/stream-filter.d.ts +16 -0
- package/dist/uni/src/artifacts/stream-filter.d.ts.map +1 -0
- package/dist/uni/src/artifacts/stream-filter.js +93 -0
- package/dist/uni/src/artifacts/stream-filter.js.map +1 -0
- package/dist/uni/src/artifacts/tool-inference.d.ts +11 -0
- package/dist/uni/src/artifacts/tool-inference.d.ts.map +1 -0
- package/dist/uni/src/artifacts/tool-inference.js +257 -0
- package/dist/uni/src/artifacts/tool-inference.js.map +1 -0
- package/dist/uni/src/events/normalizer.d.ts.map +1 -1
- package/dist/uni/src/events/normalizer.js +8 -1
- package/dist/uni/src/events/normalizer.js.map +1 -1
- package/dist/uni/src/events/provider-events.d.ts.map +1 -1
- package/dist/uni/src/events/provider-events.js +353 -56
- package/dist/uni/src/events/provider-events.js.map +1 -1
- package/dist/uni/src/program.d.ts.map +1 -1
- package/dist/uni/src/program.js +8 -4
- package/dist/uni/src/program.js.map +1 -1
- package/dist/uni/src/providers/claude-code.d.ts.map +1 -1
- package/dist/uni/src/providers/claude-code.js +6 -2
- package/dist/uni/src/providers/claude-code.js.map +1 -1
- package/dist/uni/src/providers/codex.d.ts.map +1 -1
- package/dist/uni/src/providers/codex.js +13 -7
- package/dist/uni/src/providers/codex.js.map +1 -1
- package/dist/uni/src/providers/opencode.d.ts.map +1 -1
- package/dist/uni/src/providers/opencode.js +6 -2
- package/dist/uni/src/providers/opencode.js.map +1 -1
- package/dist/uni/src/providers/pi.d.ts.map +1 -1
- package/dist/uni/src/providers/pi.js +14 -5
- package/dist/uni/src/providers/pi.js.map +1 -1
- package/dist/uni/src/providers/provider-state.d.ts +10 -0
- package/dist/uni/src/providers/provider-state.d.ts.map +1 -0
- package/dist/uni/src/providers/provider-state.js +50 -0
- package/dist/uni/src/providers/provider-state.js.map +1 -0
- package/dist/uni/src/providers/spawned-provider.d.ts.map +1 -1
- package/dist/uni/src/providers/spawned-provider.js +36 -4
- package/dist/uni/src/providers/spawned-provider.js.map +1 -1
- package/dist/uni/src/run.d.ts.map +1 -1
- package/dist/uni/src/run.js +852 -336
- package/dist/uni/src/run.js.map +1 -1
- package/dist/uni/src/session/artifact-operation-store.d.ts +66 -0
- package/dist/uni/src/session/artifact-operation-store.d.ts.map +1 -0
- package/dist/uni/src/session/artifact-operation-store.js +370 -0
- package/dist/uni/src/session/artifact-operation-store.js.map +1 -0
- package/dist/uni/src/session/context-store.d.ts +37 -0
- package/dist/uni/src/session/context-store.d.ts.map +1 -0
- package/dist/uni/src/session/context-store.js +222 -0
- package/dist/uni/src/session/context-store.js.map +1 -0
- package/dist/uni/src/session/session-store.d.ts +57 -2
- package/dist/uni/src/session/session-store.d.ts.map +1 -1
- package/dist/uni/src/session/session-store.js +484 -15
- package/dist/uni/src/session/session-store.js.map +1 -1
- package/dist/uni/src/transcript/turn-accumulator.d.ts +57 -0
- package/dist/uni/src/transcript/turn-accumulator.d.ts.map +1 -0
- package/dist/uni/src/transcript/turn-accumulator.js +136 -0
- package/dist/uni/src/transcript/turn-accumulator.js.map +1 -0
- package/dist/uni/src/types.d.ts +25 -1
- package/dist/uni/src/types.d.ts.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# @gencode/uni
|
|
2
2
|
|
|
3
|
+
## 0.4.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [c562e03]
|
|
8
|
+
- @gencode/shared@0.7.1
|
|
9
|
+
|
|
10
|
+
## 0.4.0
|
|
11
|
+
|
|
12
|
+
### Minor Changes
|
|
13
|
+
|
|
14
|
+
- 2ccd4ba: Uni runs backed by Claude Code, Codex, OpenCode, or Pi now keep the caller-provided (or generated) logical Session ID stable across session directories, callback/websocket events, final results, and later resumes. Each new logical Session creates `.channel`, `session.json`, `transcript.jsonl`, and `context.json` under `<dataDir>/.aimax/<sessionStore>/<logicalSessionId>/`; the provider-native ID is stored separately in `session.json.runtimeBinding.providerSessionId` and is used only to resume that provider.
|
|
15
|
+
|
|
16
|
+
Provider-native state now defaults to the persistent `<dataDir>/.aimax/provider-state/` tree: Claude Code uses `CLAUDE_CONFIG_DIR`, Codex uses `CODEX_HOME`, OpenCode uses `XDG_DATA_HOME`, and Pi uses `PI_CODING_AGENT_DIR` plus `PI_CODING_AGENT_SESSION_DIR`. API-level `runtimeConfig.env` and CLI `--runtime-env KEY=VALUE` are applied to the spawned provider, with provider-specific settings taking precedence over common values and Uni defaults. Resume verification uses the same effective state path. Replacement containers must persist this tree together with the logical Session directory for resume to retain provider context.
|
|
17
|
+
|
|
18
|
+
Codex Resume invocations retain `--skip-git-repo-check` and avoid the new-run-only `--cd` flag, so one-shot replacement processes can resume persisted Codex sessions from non-Git workspaces. The real Resume smoke also rejects provider errors and empty responses instead of reporting a metadata-only pass.
|
|
19
|
+
|
|
20
|
+
The four aligned providers now write a common Uni transcript shape using only observed text, thinking, paired tool events, errors, and token usage. Real usage is checkpointed in `context.json`; unavailable usage is omitted instead of being persisted as zero. Codex command and MCP activity is paired only when start and completion frames are observed, MCP tools are namespaced as `mcp:<server>:<tool>`, and a completed-only Codex `file_change` is audited as a terminal file operation without inventing a transcript tool start. Pi `toolcall_delta` is no longer misreported as assistant text. User-visible file and URL artifacts are returned in the final result and final assistant entry, while successful structured file operations are audited independently in a lazily-created, agents-compatible `artifacts.json`. `--artifacts-url-whitelist` optionally restricts URL artifacts by exact hostname; without it all valid URL artifacts are accepted, and file artifacts are unaffected. CRON runs neither create nor append an existing audit file, and ACP keeps its existing minimal compatibility path.
|
|
21
|
+
|
|
22
|
+
Legacy Uni directories are kept in place and their historical transcripts are not rewritten. Automatic binding requires a provider-specific authoritative session lifecycle record in the effective native-state tree; filenames, generic nested IDs, and ordinary Claude assistant/result frames are not treated as evidence. Resume fails explicitly when that mapping cannot be verified, instead of silently opening a new provider conversation. Once known, provider-native IDs are removed from every public and non-binding Session payload, including assistant text, tool data, titles, model labels, errors, and diagnostics. The server engine path passes a caller-provided logical Session ID through unchanged; when it is omitted, the Uni execution entry creates the public logical ID used by callbacks, results, persisted Session data, and subsequent one-shot Resume.
|
|
23
|
+
|
|
24
|
+
### Patch Changes
|
|
25
|
+
|
|
26
|
+
- Updated dependencies [2ccd4ba]
|
|
27
|
+
- @gencode/shared@0.7.0
|
|
28
|
+
|
|
3
29
|
## 0.3.1
|
|
4
30
|
|
|
5
31
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -34,6 +34,7 @@ adds runtime-specific flags inspired by `reference/cc-connect`, such as:
|
|
|
34
34
|
|
|
35
35
|
- `--runtime-cli-path`
|
|
36
36
|
- `--runtime-cli-args-flag`
|
|
37
|
+
- `--runtime-env KEY=VALUE`
|
|
37
38
|
- `--runtime-mode`
|
|
38
39
|
- `--runtime-reasoning-effort`
|
|
39
40
|
- `--runtime-router-url`
|
|
@@ -42,6 +43,16 @@ adds runtime-specific flags inspired by `reference/cc-connect`, such as:
|
|
|
42
43
|
- `--runtime-provider-env`
|
|
43
44
|
- `--runtime-provider-header`
|
|
44
45
|
|
|
46
|
+
For API callers, top-level `runtimeConfig.env` is applied to every spawned
|
|
47
|
+
provider process. The CLI's repeatable `--runtime-env KEY=VALUE` option is
|
|
48
|
+
applied to the selected provider environment. Effective environment precedence
|
|
49
|
+
is Uni's provider-state fallback, inherited process values, top-level
|
|
50
|
+
`runtimeConfig.env`, `--runtime-provider-env` (where supported), and finally the
|
|
51
|
+
selected provider's environment (`--runtime-env`); dedicated options such as
|
|
52
|
+
`--runtime-codex-home` override the corresponding environment key. The same
|
|
53
|
+
effective provider-state path is used both to launch the child and to verify
|
|
54
|
+
legacy Resume evidence.
|
|
55
|
+
|
|
45
56
|
## Smoke Tests
|
|
46
57
|
|
|
47
58
|
Provider-specific helper scripts live in `scripts/`:
|
|
@@ -49,6 +60,8 @@ Provider-specific helper scripts live in `scripts/`:
|
|
|
49
60
|
- `scripts/test-claude-run.sh`
|
|
50
61
|
- `scripts/test-codex-run.sh`
|
|
51
62
|
- `scripts/test-opencode-run.sh`
|
|
63
|
+
- `scripts/test-pi-run.sh`
|
|
64
|
+
- `scripts/test-one-shot-resume.sh`
|
|
52
65
|
|
|
53
66
|
To run the OpenCode provider through `@gencode/uni`:
|
|
54
67
|
|
|
@@ -57,6 +70,13 @@ cd source/packages/uni
|
|
|
57
70
|
./scripts/run-opencode-with-uni.sh "Summarize this repository"
|
|
58
71
|
```
|
|
59
72
|
|
|
73
|
+
The Pi provider uses the official `pi` command:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
cd source/packages/uni
|
|
77
|
+
./scripts/test-pi-run.sh "Summarize this repository"
|
|
78
|
+
```
|
|
79
|
+
|
|
60
80
|
The helper defaults to `UNI_OUTPUT=jsonl`, so callback-compatible events are
|
|
61
81
|
written to stdout one JSON object per line as the provider emits them. Use
|
|
62
82
|
`UNI_OUTPUT=json` when you need the final aggregated result object instead.
|
|
@@ -72,3 +92,87 @@ UNI_RUNTIME_PROVIDER_BASE_URL="https://api.example.com/v1" \
|
|
|
72
92
|
UNI_RUNTIME_PROVIDER_MODEL="gpt-4.1" \
|
|
73
93
|
./scripts/run-opencode-with-uni.sh "Review the current project"
|
|
74
94
|
```
|
|
95
|
+
|
|
96
|
+
`UNI_SESSION_ID` is always the public logical Session ID. It names the
|
|
97
|
+
directory under `<dataDir>/.aimax/sessions/` and remains unchanged in stdout,
|
|
98
|
+
callback, websocket, and final result events. Do not pass a provider-native
|
|
99
|
+
session/thread ID here; Uni stores that private Resume binding only in
|
|
100
|
+
`session.json.runtimeBinding.providerSessionId`.
|
|
101
|
+
|
|
102
|
+
To exercise a real two-turn Resume in separate one-shot processes, run:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
cd source/packages/uni
|
|
106
|
+
UNI_DATA_DIR=/tmp/aimax-uni-resume \
|
|
107
|
+
./scripts/test-one-shot-resume.sh opencode
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Replace `opencode` with `claude-code`, `codex`, or `pi` as needed. The smoke
|
|
111
|
+
script makes two real provider calls, so credentials, network access, and any
|
|
112
|
+
provider charges apply. It verifies that both public results use the same
|
|
113
|
+
logical ID, the provider binding remains stable, all four base Session files
|
|
114
|
+
exist, the second run recalls the first-turn marker, and the transcript grows.
|
|
115
|
+
|
|
116
|
+
For a real replacement-container test, split the phases across containers that
|
|
117
|
+
share the same persistent data mount:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# first container
|
|
121
|
+
UNI_RESUME_PHASE=first \
|
|
122
|
+
UNI_SESSION_ID=resume-smoke-1 \
|
|
123
|
+
UNI_DATA_DIR=/data/user1 \
|
|
124
|
+
./scripts/test-one-shot-resume.sh pi
|
|
125
|
+
|
|
126
|
+
# replacement container, with /data/user1 mounted from the same volume
|
|
127
|
+
UNI_RESUME_PHASE=second \
|
|
128
|
+
UNI_SESSION_ID=resume-smoke-1 \
|
|
129
|
+
UNI_DATA_DIR=/data/user1 \
|
|
130
|
+
./scripts/test-one-shot-resume.sh pi
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
The first phase writes a non-sensitive validation checkpoint under
|
|
134
|
+
`<dataDir>/.aimax/resume-smoke/` and does not copy a provider-native ID into
|
|
135
|
+
that checkpoint. Within AIMax-owned Session metadata, the native ID remains
|
|
136
|
+
only in `session.json.runtimeBinding`.
|
|
137
|
+
|
|
138
|
+
By default Uni keeps provider-native state below the same persistent data root:
|
|
139
|
+
|
|
140
|
+
| Runtime | Default native-state path | Controlling environment |
|
|
141
|
+
| --- | --- | --- |
|
|
142
|
+
| Claude Code | `<dataDir>/.aimax/provider-state/claude-code` | `CLAUDE_CONFIG_DIR` |
|
|
143
|
+
| Codex | `<dataDir>/.aimax/provider-state/codex` | `CODEX_HOME` |
|
|
144
|
+
| OpenCode | `<dataDir>/.aimax/provider-state/opencode` | `XDG_DATA_HOME` points at `<dataDir>/.aimax/provider-state` |
|
|
145
|
+
| Pi | `<dataDir>/.aimax/provider-state/pi` | `PI_CODING_AGENT_DIR`; sessions use `PI_CODING_AGENT_SESSION_DIR` |
|
|
146
|
+
|
|
147
|
+
An explicitly supplied provider-state environment variable takes precedence.
|
|
148
|
+
When running in containers, that override must also point at a persistent mount;
|
|
149
|
+
persisting only `session.json` is insufficient for provider-native Resume.
|
|
150
|
+
|
|
151
|
+
Legacy Uni Sessions are migrated only when their transcript consistently names
|
|
152
|
+
one runtime and the matching provider-state tree contains that provider's known
|
|
153
|
+
authoritative session lifecycle record. For Claude Code this means
|
|
154
|
+
`system + subtype:init`; ordinary assistant/result frames, a matching filename,
|
|
155
|
+
or a generic nested `id` are not accepted as proof. When the mapping cannot be
|
|
156
|
+
established, Resume fails before starting the provider instead of silently
|
|
157
|
+
creating a new conversation.
|
|
158
|
+
|
|
159
|
+
Uni uses only the logical Session ID on public event fields. Once a
|
|
160
|
+
provider-native ID is known, exact occurrences are redacted from all public and
|
|
161
|
+
non-binding Session payloads, including assistant text, thinking, tool payloads,
|
|
162
|
+
titles, model labels, errors, diagnostics, stdout, callback, websocket, and
|
|
163
|
+
transcript fields. The native ID remains in
|
|
164
|
+
`session.json.runtimeBinding.providerSessionId`, provider-owned state, and the
|
|
165
|
+
provider Resume call.
|
|
166
|
+
|
|
167
|
+
Provider tool normalization is evidence-based. Codex command and MCP calls are
|
|
168
|
+
paired only from observed start/completion frames, and MCP names use
|
|
169
|
+
`mcp:<server>:<tool>` so remote tools are not mistaken for local file tools. A
|
|
170
|
+
completed-only Codex `file_change` is audited internally as a terminal file
|
|
171
|
+
operation without a synthetic public tool start or transcript tool pair.
|
|
172
|
+
OpenCode completed-only `write` and `edit` terminal events are likewise audited
|
|
173
|
+
when they are successful and contain complete structured local-file input; they
|
|
174
|
+
do not create synthetic transcript tool pairs. Pi
|
|
175
|
+
`toolcall_delta` frames are not assistant text; only Pi `text_delta` and
|
|
176
|
+
`thinking_delta` update those corresponding streams. Because all four aligned
|
|
177
|
+
adapters request native JSON event modes, non-JSON stdout remains raw and is not
|
|
178
|
+
invented as assistant text.
|
|
@@ -5,7 +5,7 @@ export { isAgentDiagnosticEvent } from "./agent-progress.js";
|
|
|
5
5
|
export { formatTaskForDisplay } from "./task-display.js";
|
|
6
6
|
export type { AgentCustomProgressEvent, AgentDiagnosticEvent, AgentDiagnosticLevel, AgentDiagnosticScope, AgentProgressEvent, AgentProgressEventBase, AgentTaskItem, AgentTaskStatus, AgentTaskUpdatedEvent, } from "./agent-progress.js";
|
|
7
7
|
export type { ArtifactRecord, CallbackEventPayload, Channel, RunResultPayload, StreamEnvelope, StreamEventName, } from "./run-events.js";
|
|
8
|
-
export type { SessionMetadata, SessionSummary } from "./session.js";
|
|
8
|
+
export type { SessionMetadata, SessionRuntimeBinding, SessionSummary, } from "./session.js";
|
|
9
9
|
export type { CoreMemoryCaptureConfig, CoreMemoryCompactionRecallConfig, CoreMemoryConfig, CoreMemoryDreamGateConfig, CoreMemoryKnowledgeControllerConfig, CoreMemoryRecallConfig, MemoryCompactionRecallRuntimeState, MemoryRecallRuntimeState, } from "./core-memory.js";
|
|
10
10
|
export type { CollapseSpan, CompressionLayer, ContextCompactionState, ModelUsageCheckpoint, ReadStateRecord, SessionMemorySnapshot, SessionContextSnapshot, SnipRecord, ToolResultReference, ToolResultBudgetRecord, } from "./context-protocol.js";
|
|
11
11
|
export { MAX_GOAL_OBJECTIVE_CHARS, MAX_GOAL_CONTINUATIONS_PER_RUN } from "./goal.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../shared/src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,YAAY,EACV,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,OAAO,EACP,gBAAgB,EAChB,cAAc,EACd,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../shared/src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,YAAY,EACV,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,OAAO,EACP,gBAAgB,EAChB,cAAc,EACd,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,eAAe,EACf,qBAAqB,EACrB,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,uBAAuB,EACvB,gCAAgC,EAChC,gBAAgB,EAChB,yBAAyB,EACzB,mCAAmC,EACnC,sBAAsB,EACtB,kCAAkC,EAClC,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,UAAU,EACV,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,MAAM,WAAW,CAAC;AACrF,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGxD,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,EACb,UAAU,EACV,eAAe,EACf,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,QAAQ,EACR,UAAU,EACV,eAAe,EACf,aAAa,EACb,aAAa,EACb,eAAe,EACf,WAAW,EACX,UAAU,EACV,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,UAAU,EACV,cAAc,EACd,gBAAgB,GACjB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,YAAY,EACV,WAAW,EACX,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../shared/src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../shared/src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAgDzD,sCAAsC;AACtC,OAAO,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,MAAM,WAAW,CAAC;AAGrF,sBAAsB;AACtB,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,EACb,UAAU,EACV,eAAe,EACf,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,WAAW,CAAC;AAoBnB,yBAAyB;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -17,6 +17,7 @@ export type ArtifactRecord = {
|
|
|
17
17
|
};
|
|
18
18
|
type EventEnvelopeBase = {
|
|
19
19
|
sessionId: string;
|
|
20
|
+
parentSessionId?: string;
|
|
20
21
|
channel: Channel;
|
|
21
22
|
messageId?: string;
|
|
22
23
|
user?: string;
|
|
@@ -62,6 +63,7 @@ export type CallbackEventPayload = (EventEnvelopeBase & {
|
|
|
62
63
|
message: string;
|
|
63
64
|
}) | {
|
|
64
65
|
sessionId: string;
|
|
66
|
+
parentSessionId?: string;
|
|
65
67
|
channel: Channel;
|
|
66
68
|
messageId?: string;
|
|
67
69
|
user?: string;
|
|
@@ -71,6 +73,7 @@ export type CallbackEventPayload = (EventEnvelopeBase & {
|
|
|
71
73
|
message: string;
|
|
72
74
|
} | {
|
|
73
75
|
sessionId: string;
|
|
76
|
+
parentSessionId?: string;
|
|
74
77
|
channel: Channel;
|
|
75
78
|
messageId?: string;
|
|
76
79
|
user?: string;
|
|
@@ -87,6 +90,7 @@ export type StreamEnvelope = {
|
|
|
87
90
|
} | {
|
|
88
91
|
type: "start";
|
|
89
92
|
sessionId: string;
|
|
93
|
+
parentSessionId?: string;
|
|
90
94
|
messageId?: string;
|
|
91
95
|
channel: Channel;
|
|
92
96
|
user?: string;
|
|
@@ -95,6 +99,7 @@ export type StreamEnvelope = {
|
|
|
95
99
|
} | {
|
|
96
100
|
type: "text";
|
|
97
101
|
sessionId: string;
|
|
102
|
+
parentSessionId?: string;
|
|
98
103
|
messageId?: string;
|
|
99
104
|
channel: Channel;
|
|
100
105
|
user?: string;
|
|
@@ -104,6 +109,7 @@ export type StreamEnvelope = {
|
|
|
104
109
|
} | {
|
|
105
110
|
type: "progress";
|
|
106
111
|
sessionId: string;
|
|
112
|
+
parentSessionId?: string;
|
|
107
113
|
messageId?: string;
|
|
108
114
|
channel: Channel;
|
|
109
115
|
user?: string;
|
|
@@ -112,6 +118,7 @@ export type StreamEnvelope = {
|
|
|
112
118
|
} | {
|
|
113
119
|
type: "done";
|
|
114
120
|
sessionId: string;
|
|
121
|
+
parentSessionId?: string;
|
|
115
122
|
messageId?: string;
|
|
116
123
|
channel: Channel;
|
|
117
124
|
user?: string;
|
|
@@ -120,6 +127,7 @@ export type StreamEnvelope = {
|
|
|
120
127
|
} | {
|
|
121
128
|
type: "error";
|
|
122
129
|
sessionId: string;
|
|
130
|
+
parentSessionId?: string;
|
|
123
131
|
messageId?: string;
|
|
124
132
|
channel: Channel;
|
|
125
133
|
user?: string;
|
|
@@ -128,6 +136,7 @@ export type StreamEnvelope = {
|
|
|
128
136
|
} | {
|
|
129
137
|
type: "hitl";
|
|
130
138
|
sessionId: string;
|
|
139
|
+
parentSessionId?: string;
|
|
131
140
|
messageId?: string;
|
|
132
141
|
channel: Channel;
|
|
133
142
|
user?: string;
|
|
@@ -136,6 +145,7 @@ export type StreamEnvelope = {
|
|
|
136
145
|
} | {
|
|
137
146
|
type: "title_updated";
|
|
138
147
|
sessionId: string;
|
|
148
|
+
parentSessionId?: string;
|
|
139
149
|
messageId?: string;
|
|
140
150
|
channel: Channel;
|
|
141
151
|
user?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-events.d.ts","sourceRoot":"","sources":["../../../../shared/src/run-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,eAAe,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEhG,MAAM,MAAM,cAAc,GACtB;IACE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,KAAK,CAAC;CACb,GACD;IACE,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,KAAK,CAAC;CACd,CAAC;AAEN,KAAK,iBAAiB,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,QAAQ,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,aAAa,CAAC,EAAE;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,kBAAkB,CAAC;QACjC,KAAK,CAAC,EAAE,WAAW,CAAC;KACrB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAC5B,CAAC,iBAAiB,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GACxD,CAAC,iBAAiB,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,kBAAkB,CAAA;CAAE,CAAC,GACrE,CAAC,iBAAiB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,CAAC,GAChE,CAAC,iBAAiB,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GACxD;IACE,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB,GACD;IACE,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,WAAW,CAAC;CACtB,GACD,CAAC,iBAAiB,GAAG;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEnE,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,eAAe,CAAC;AAE1G,MAAM,MAAM,cAAc,GACtB;IACE,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,kBAAkB,CAAC;CAC3B,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,gBAAgB,CAAC;CAC1B,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,WAAW,CAAC;CACtB,GACD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"run-events.d.ts","sourceRoot":"","sources":["../../../../shared/src/run-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,18 @@ export type SessionSummary = {
|
|
|
17
17
|
updatedAt: string;
|
|
18
18
|
goalStatus?: GoalStatus | null;
|
|
19
19
|
};
|
|
20
|
+
/**
|
|
21
|
+
* Runtime-owned binding data for a logical AIMax session.
|
|
22
|
+
*
|
|
23
|
+
* The logical session ID remains the public and persisted directory ID. The
|
|
24
|
+
* provider-native ID is deliberately scoped to this binding and is only used
|
|
25
|
+
* when resuming the provider runtime.
|
|
26
|
+
*/
|
|
27
|
+
export type SessionRuntimeBinding = {
|
|
28
|
+
engine: "uni";
|
|
29
|
+
runtimeAgent: string;
|
|
30
|
+
providerSessionId?: string;
|
|
31
|
+
};
|
|
20
32
|
/**
|
|
21
33
|
* Stable cross-package session metadata record.
|
|
22
34
|
*
|
|
@@ -28,10 +40,13 @@ export type SessionSummary = {
|
|
|
28
40
|
*/
|
|
29
41
|
export type SessionMetadata = {
|
|
30
42
|
id: string;
|
|
43
|
+
/** Optional originating session for independently persisted child-like runs such as CRON executions. */
|
|
44
|
+
parentSessionId?: string;
|
|
31
45
|
title: string;
|
|
32
46
|
channel: Channel;
|
|
33
47
|
createdAt: string;
|
|
34
48
|
updatedAt: string;
|
|
35
49
|
goalStatus?: GoalStatus | null;
|
|
50
|
+
runtimeBinding?: SessionRuntimeBinding;
|
|
36
51
|
};
|
|
37
52
|
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../shared/src/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../shared/src/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,KAAK,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,wGAAwG;IACxG,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ArtifactRecord } from "@gencode/shared";
|
|
2
|
+
export type ArtifactAccumulatorOptions = {
|
|
3
|
+
urlWhitelist?: string[];
|
|
4
|
+
};
|
|
5
|
+
export declare class ArtifactAccumulator {
|
|
6
|
+
private readonly records;
|
|
7
|
+
private readonly indices;
|
|
8
|
+
private readonly urlWhitelist?;
|
|
9
|
+
constructor(options?: ArtifactAccumulatorOptions);
|
|
10
|
+
addOwn(records: ArtifactRecord[]): void;
|
|
11
|
+
addChild(records: ArtifactRecord[] | undefined): void;
|
|
12
|
+
addInferred(records: ArtifactRecord[]): void;
|
|
13
|
+
dump(): ArtifactRecord[];
|
|
14
|
+
private add;
|
|
15
|
+
private shouldCollect;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=accumulator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accumulator.d.ts","sourceRoot":"","sources":["../../../../src/artifacts/accumulator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAgBtD,MAAM,MAAM,0BAA0B,GAAG;IACvC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAEF,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAc;gBAEhC,OAAO,GAAE,0BAA+B;IAOpD,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI;IAIvC,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,SAAS,GAAG,IAAI;IAMrD,WAAW,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI;IAI5C,IAAI,IAAI,cAAc,EAAE;IAIxB,OAAO,CAAC,GAAG;IAqBX,OAAO,CAAC,aAAa;CAOtB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
const ARTIFACT_SOURCE_PRIORITY = {
|
|
2
|
+
Inferred: 1,
|
|
3
|
+
Child: 2,
|
|
4
|
+
Own: 3,
|
|
5
|
+
};
|
|
6
|
+
export class ArtifactAccumulator {
|
|
7
|
+
records = [];
|
|
8
|
+
indices = new Map();
|
|
9
|
+
urlWhitelist;
|
|
10
|
+
constructor(options = {}) {
|
|
11
|
+
const normalizedWhitelist = normalizeUrlWhitelist(options.urlWhitelist);
|
|
12
|
+
this.urlWhitelist = normalizedWhitelist.length > 0
|
|
13
|
+
? new Set(normalizedWhitelist)
|
|
14
|
+
: undefined;
|
|
15
|
+
}
|
|
16
|
+
addOwn(records) {
|
|
17
|
+
this.add(records, ARTIFACT_SOURCE_PRIORITY.Own);
|
|
18
|
+
}
|
|
19
|
+
addChild(records) {
|
|
20
|
+
if (records && records.length > 0) {
|
|
21
|
+
this.add(records, ARTIFACT_SOURCE_PRIORITY.Child);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
addInferred(records) {
|
|
25
|
+
this.add(records, ARTIFACT_SOURCE_PRIORITY.Inferred);
|
|
26
|
+
}
|
|
27
|
+
dump() {
|
|
28
|
+
return this.records.map((entry) => entry.record);
|
|
29
|
+
}
|
|
30
|
+
add(records, priority) {
|
|
31
|
+
for (const record of records) {
|
|
32
|
+
if (!this.shouldCollect(record)) {
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
const key = artifactKey(record);
|
|
36
|
+
const existingIndex = this.indices.get(key);
|
|
37
|
+
if (existingIndex !== undefined) {
|
|
38
|
+
const existing = this.records[existingIndex];
|
|
39
|
+
if (existing && priority > existing.priority) {
|
|
40
|
+
this.records[existingIndex] = { record, priority };
|
|
41
|
+
}
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
this.indices.set(key, this.records.length);
|
|
45
|
+
this.records.push({ record, priority });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
shouldCollect(record) {
|
|
49
|
+
if (record.kind !== "url" || !this.urlWhitelist) {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
const hostname = hostnameFromUrl(record.url);
|
|
53
|
+
return hostname ? this.urlWhitelist.has(hostname) : false;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function artifactKey(record) {
|
|
57
|
+
return record.kind === "file" ? `file:${record.file}` : `url:${record.url}`;
|
|
58
|
+
}
|
|
59
|
+
function normalizeUrlWhitelist(values) {
|
|
60
|
+
if (!values) {
|
|
61
|
+
return [];
|
|
62
|
+
}
|
|
63
|
+
return values.map((value) => value.trim().toLowerCase()).filter(Boolean);
|
|
64
|
+
}
|
|
65
|
+
function hostnameFromUrl(value) {
|
|
66
|
+
try {
|
|
67
|
+
return new URL(value).hostname.trim().toLowerCase() || null;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=accumulator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accumulator.js","sourceRoot":"","sources":["../../../../src/artifacts/accumulator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ArtifactRecord } from "@gencode/shared";
|
|
2
|
+
export declare const ARTIFACTS_START_TAG = "<aimax_artifacts>";
|
|
3
|
+
export declare const ARTIFACTS_END_TAG = "</aimax_artifacts>";
|
|
4
|
+
export type ArtifactParseResult = {
|
|
5
|
+
cleanedText: string;
|
|
6
|
+
artifacts: ArtifactRecord[];
|
|
7
|
+
warnings: string[];
|
|
8
|
+
};
|
|
9
|
+
export type ArtifactParseOptions = {
|
|
10
|
+
now?: () => Date;
|
|
11
|
+
workspaceDir?: string;
|
|
12
|
+
};
|
|
13
|
+
export declare function parseAndStripArtifacts(text: string, options?: ArtifactParseOptions): ArtifactParseResult;
|
|
14
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../../src/artifacts/parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,eAAO,MAAM,mBAAmB,sBAAsB,CAAC;AACvD,eAAO,MAAM,iBAAiB,uBAAuB,CAAC;AAEtD,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,oBAAyB,GACjC,mBAAmB,CA+CrB"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
export const ARTIFACTS_START_TAG = "<aimax_artifacts>";
|
|
3
|
+
export const ARTIFACTS_END_TAG = "</aimax_artifacts>";
|
|
4
|
+
export function parseAndStripArtifacts(text, options = {}) {
|
|
5
|
+
const warnings = [];
|
|
6
|
+
if (!text.includes(ARTIFACTS_START_TAG)) {
|
|
7
|
+
return { cleanedText: text, artifacts: [], warnings };
|
|
8
|
+
}
|
|
9
|
+
let cleanedText = text;
|
|
10
|
+
let timestamp;
|
|
11
|
+
const artifacts = [];
|
|
12
|
+
while (true) {
|
|
13
|
+
const startIndex = cleanedText.indexOf(ARTIFACTS_START_TAG);
|
|
14
|
+
if (startIndex === -1) {
|
|
15
|
+
break;
|
|
16
|
+
}
|
|
17
|
+
const endIndex = cleanedText.indexOf(ARTIFACTS_END_TAG, startIndex + ARTIFACTS_START_TAG.length);
|
|
18
|
+
if (endIndex === -1) {
|
|
19
|
+
warnings.push("Artifacts block is missing the closing tag; stripping the malformed block");
|
|
20
|
+
cleanedText = cleanedText.slice(0, startIndex).trimEnd();
|
|
21
|
+
break;
|
|
22
|
+
}
|
|
23
|
+
const jsonText = cleanedText
|
|
24
|
+
.slice(startIndex + ARTIFACTS_START_TAG.length, endIndex)
|
|
25
|
+
.trim();
|
|
26
|
+
if (jsonText) {
|
|
27
|
+
timestamp ??= (options.now ?? (() => new Date()))().toISOString();
|
|
28
|
+
artifacts.push(...parseArtifactsJson(jsonText, {
|
|
29
|
+
warnings,
|
|
30
|
+
timestamp,
|
|
31
|
+
workspaceDir: options.workspaceDir,
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
const before = cleanedText.slice(0, startIndex).trimEnd();
|
|
35
|
+
const after = cleanedText.slice(endIndex + ARTIFACTS_END_TAG.length).trimStart();
|
|
36
|
+
cleanedText = [before, after]
|
|
37
|
+
.filter((part) => part.length > 0)
|
|
38
|
+
.join("\n")
|
|
39
|
+
.trimEnd();
|
|
40
|
+
}
|
|
41
|
+
return { cleanedText, artifacts, warnings };
|
|
42
|
+
}
|
|
43
|
+
function parseArtifactsJson(jsonText, params) {
|
|
44
|
+
const { warnings, timestamp, workspaceDir } = params;
|
|
45
|
+
let parsed;
|
|
46
|
+
try {
|
|
47
|
+
parsed = JSON.parse(jsonText);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
warnings.push(`Failed to parse artifacts JSON: ${error instanceof Error ? error.message : String(error)}`);
|
|
51
|
+
return [];
|
|
52
|
+
}
|
|
53
|
+
if (!Array.isArray(parsed)) {
|
|
54
|
+
warnings.push("Artifacts block content is not a JSON array");
|
|
55
|
+
return [];
|
|
56
|
+
}
|
|
57
|
+
const artifacts = [];
|
|
58
|
+
for (let index = 0; index < parsed.length; index += 1) {
|
|
59
|
+
const item = parsed[index];
|
|
60
|
+
if (!item || typeof item !== "object") {
|
|
61
|
+
warnings.push(`Artifact at index ${index} is not an object, skipping`);
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
const artifact = normalizeArtifact(item, {
|
|
65
|
+
index,
|
|
66
|
+
warnings,
|
|
67
|
+
timestamp,
|
|
68
|
+
workspaceDir,
|
|
69
|
+
});
|
|
70
|
+
if (artifact) {
|
|
71
|
+
artifacts.push(artifact);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return artifacts;
|
|
75
|
+
}
|
|
76
|
+
function normalizeArtifact(raw, params) {
|
|
77
|
+
const { index, warnings, timestamp, workspaceDir } = params;
|
|
78
|
+
const kind = raw.kind;
|
|
79
|
+
if (kind !== "file" && kind !== "url") {
|
|
80
|
+
warnings.push(`Artifact at index ${index}: invalid kind "${String(kind)}", expected "file" or "url", skipping`);
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
if (kind === "file") {
|
|
84
|
+
const rawFile = typeof raw.file === "string" ? raw.file.trim() : "";
|
|
85
|
+
if (!rawFile) {
|
|
86
|
+
warnings.push(`Artifact at index ${index}: kind=file but missing file path, skipping`);
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
const file = normalizeFilePath(rawFile, workspaceDir);
|
|
90
|
+
if (!file) {
|
|
91
|
+
warnings.push(`Artifact at index ${index}: file path must be absolute, skipping`);
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
kind: "file",
|
|
96
|
+
file,
|
|
97
|
+
timestamp,
|
|
98
|
+
label: normalizeLabel(raw.label, path.basename(file) || "File artifact", index, warnings),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
const url = typeof raw.url === "string" ? raw.url.trim() : "";
|
|
102
|
+
if (!url) {
|
|
103
|
+
warnings.push(`Artifact at index ${index}: kind=url but missing url, skipping`);
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
const fallbackLabel = hostFromUrl(url) ?? "URL artifact";
|
|
107
|
+
if (!isValidUrl(url)) {
|
|
108
|
+
warnings.push(`Artifact at index ${index}: url is invalid, skipping`);
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
return {
|
|
112
|
+
kind: "url",
|
|
113
|
+
url,
|
|
114
|
+
timestamp,
|
|
115
|
+
label: normalizeLabel(raw.label, fallbackLabel, index, warnings),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function normalizeLabel(raw, fallback, index, warnings) {
|
|
119
|
+
if (typeof raw === "string" && raw.trim()) {
|
|
120
|
+
return raw.trim();
|
|
121
|
+
}
|
|
122
|
+
warnings.push(`Artifact at index ${index}: missing or empty label, using fallback label`);
|
|
123
|
+
return fallback;
|
|
124
|
+
}
|
|
125
|
+
function normalizeFilePath(file, workspaceDir) {
|
|
126
|
+
if (path.isAbsolute(file)) {
|
|
127
|
+
return path.normalize(file);
|
|
128
|
+
}
|
|
129
|
+
if (!workspaceDir?.trim()) {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
return path.normalize(path.join(workspaceDir, file));
|
|
133
|
+
}
|
|
134
|
+
function isValidUrl(value) {
|
|
135
|
+
try {
|
|
136
|
+
const parsed = new URL(value);
|
|
137
|
+
return Boolean(parsed.protocol && parsed.host);
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
function hostFromUrl(value) {
|
|
144
|
+
try {
|
|
145
|
+
return new URL(value).host || undefined;
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
return undefined;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../src/artifacts/parser.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AACvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AAatD,MAAM,UAAU,sBAAsB,CACpC,IAAY,EACZ,UAAgC,EAAE;IAElC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;IACxD,CAAC;IAED,IAAI,WAAW,GAAG,IAAI,CAAC;IACvB,IAAI,SAA6B,CAAC;IAClC,MAAM,SAAS,GAAqB,EAAE,CAAC;IAEvC,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAC5D,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;YACtB,MAAM;QACR,CAAC;QAED,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAClC,iBAAiB,EACjB,UAAU,GAAG,mBAAmB,CAAC,MAAM,CACxC,CAAC;QACF,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;YAC3F,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;YACzD,MAAM;QACR,CAAC;QAED,MAAM,QAAQ,GAAG,WAAW;aACzB,KAAK,CAAC,UAAU,GAAG,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC;aACxD,IAAI,EAAE,CAAC;QACV,IAAI,QAAQ,EAAE,CAAC;YACb,SAAS,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;YAClE,SAAS,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,QAAQ,EAAE;gBAC7C,QAAQ;gBACR,SAAS;gBACT,YAAY,EAAE,OAAO,CAAC,YAAY;aACnC,CAAC,CAAC,CAAC;QACN,CAAC;QAED,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1D,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;QACjF,WAAW,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;aAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aACjC,IAAI,CAAC,IAAI,CAAC;aACV,OAAO,EAAE,CAAC;IACf,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAC9C,CAAC;AAED,SAAS,kBAAkB,CACzB,QAAgB,EAChB,MAIC;IAED,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IACrD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,QAAQ,CAAC,IAAI,CACX,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC5F,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAC7D,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAqB,EAAE,CAAC;IACvC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,KAAK,6BAA6B,CAAC,CAAC;YACvE,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAA+B,EAAE;YAClE,KAAK;YACL,QAAQ;YACR,SAAS;YACT,YAAY;SACb,CAAC,CAAC;QACH,IAAI,QAAQ,EAAE,CAAC;YACb,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,iBAAiB,CACxB,GAA4B,EAC5B,MAKC;IAED,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IAC5D,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACtC,QAAQ,CAAC,IAAI,CACX,qBAAqB,KAAK,mBAAmB,MAAM,CAAC,IAAI,CAAC,uCAAuC,CACjG,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,qBAAqB,KAAK,6CAA6C,CAAC,CAAC;YACvF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,QAAQ,CAAC,IAAI,CAAC,qBAAqB,KAAK,wCAAwC,CAAC,CAAC;YAClF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,IAAI;YACJ,SAAS;YACT,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,eAAe,EAAE,KAAK,EAAE,QAAQ,CAAC;SAC1F,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,QAAQ,CAAC,IAAI,CAAC,qBAAqB,KAAK,sCAAsC,CAAC,CAAC;QAChF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC;IACzD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,qBAAqB,KAAK,4BAA4B,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;QACL,IAAI,EAAE,KAAK;QACX,GAAG;QACH,SAAS;QACT,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC;KACjE,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,GAAY,EACZ,QAAgB,EAChB,KAAa,EACb,QAAkB;IAElB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QAC1C,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IACD,QAAQ,CAAC,IAAI,CAAC,qBAAqB,KAAK,gDAAgD,CAAC,CAAC;IAC1F,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,YAAgC;IACvE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9B,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Incrementally mirrors parseAndStripArtifacts' whitespace semantics: the
|
|
3
|
+
* declaration and adjacent whitespace are withheld until it is known whether
|
|
4
|
+
* visible text follows the block.
|
|
5
|
+
*/
|
|
6
|
+
export declare class ArtifactStreamFilter {
|
|
7
|
+
private buffer;
|
|
8
|
+
private suppressing;
|
|
9
|
+
private hasVisibleContent;
|
|
10
|
+
private boundaryPending;
|
|
11
|
+
push(delta: string): string;
|
|
12
|
+
finish(): string;
|
|
13
|
+
reset(): void;
|
|
14
|
+
private emitVisible;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=stream-filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-filter.d.ts","sourceRoot":"","sources":["../../../../src/artifacts/stream-filter.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,eAAe,CAAS;IAEhC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IA0C3B,MAAM,IAAI,MAAM;IAahB,KAAK,IAAI,IAAI;IAOb,OAAO,CAAC,WAAW;CAcpB"}
|