@llm4ts/flow 0.13.5 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/BoardSync.d.ts +81 -0
- package/dist/BoardSync.d.ts.map +1 -0
- package/dist/BoardSync.js +259 -0
- package/dist/BoardSync.js.map +1 -0
- package/dist/EstimatedUsage.d.ts +28 -0
- package/dist/EstimatedUsage.d.ts.map +1 -0
- package/dist/EstimatedUsage.js +91 -0
- package/dist/EstimatedUsage.js.map +1 -0
- package/dist/Pack.d.ts +1 -0
- package/dist/Pack.d.ts.map +1 -1
- package/dist/Pack.js +7 -0
- package/dist/Pack.js.map +1 -1
- package/dist/PageSpec.d.ts +104 -0
- package/dist/PageSpec.d.ts.map +1 -0
- package/dist/PageSpec.js +272 -0
- package/dist/PageSpec.js.map +1 -0
- package/dist/SpecChecks.d.ts +6 -1
- package/dist/SpecChecks.d.ts.map +1 -1
- package/dist/SpecChecks.js +11 -4
- package/dist/SpecChecks.js.map +1 -1
- package/dist/Survey.d.ts +38 -1
- package/dist/Survey.d.ts.map +1 -1
- package/dist/Survey.js +101 -5
- package/dist/Survey.js.map +1 -1
- package/dist/Workspace.d.ts +44 -5
- package/dist/Workspace.d.ts.map +1 -1
- package/dist/Workspace.js +84 -14
- package/dist/Workspace.js.map +1 -1
- package/package.json +5 -2
- package/src/BoardSync.ts +358 -0
- package/src/EstimatedUsage.ts +180 -0
- package/src/Pack.ts +11 -0
- package/src/PageSpec.ts +354 -0
- package/src/SpecChecks.ts +12 -6
- package/src/Survey.ts +137 -5
- package/src/Workspace.ts +120 -15
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Schema from "effect/Schema";
|
|
3
|
+
import { type AzureDevOpsToolShape } from "./AzureDevOpsTool.ts";
|
|
4
|
+
import { type FlowError } from "./FlowError.ts";
|
|
5
|
+
import { type PlainFileStoreShape } from "./Persistence.ts";
|
|
6
|
+
export declare const BoardVersion = 1;
|
|
7
|
+
export declare const BoardStatus: Schema.Literals<readonly ["planned", "active", "done", "failed", "skipped"]>;
|
|
8
|
+
export type BoardStatus = typeof BoardStatus.Type;
|
|
9
|
+
declare const BoardItem_base: Schema.Class<BoardItem, Schema.Struct<{
|
|
10
|
+
readonly id: Schema.String;
|
|
11
|
+
readonly title: Schema.String;
|
|
12
|
+
readonly wave: Schema.optionalKey<Schema.String>;
|
|
13
|
+
readonly status: Schema.Literals<readonly ["planned", "active", "done", "failed", "skipped"]>;
|
|
14
|
+
readonly branch: Schema.optionalKey<Schema.String>;
|
|
15
|
+
readonly reportPath: Schema.optionalKey<Schema.String>;
|
|
16
|
+
/** Free-form note: a failure reason, a skip rationale, a triage disposition. */
|
|
17
|
+
readonly detail: Schema.optionalKey<Schema.String>;
|
|
18
|
+
/** ESTIMATES, never measurements — see EstimatedUsage (ADR 0012). */
|
|
19
|
+
readonly estimatedTokens: Schema.optionalKey<Schema.Int>;
|
|
20
|
+
readonly estimatedCostUsd: Schema.optionalKey<Schema.Number>;
|
|
21
|
+
}>, {}>;
|
|
22
|
+
export declare class BoardItem extends BoardItem_base {
|
|
23
|
+
}
|
|
24
|
+
declare const Board_base: Schema.Class<Board, Schema.Struct<{
|
|
25
|
+
readonly title: Schema.String;
|
|
26
|
+
readonly items: Schema.$Array<typeof BoardItem>;
|
|
27
|
+
}>, {}>;
|
|
28
|
+
export declare class Board extends Board_base {
|
|
29
|
+
}
|
|
30
|
+
export interface BoardItemResult {
|
|
31
|
+
readonly branch?: string;
|
|
32
|
+
readonly reportPath?: string;
|
|
33
|
+
readonly detail?: string;
|
|
34
|
+
readonly estimatedTokens?: number;
|
|
35
|
+
readonly estimatedCostUsd?: number;
|
|
36
|
+
}
|
|
37
|
+
export interface BoardSyncShape {
|
|
38
|
+
/** Publish the full planned work list. Idempotent: known ids keep their state. */
|
|
39
|
+
readonly plan: (items: ReadonlyArray<BoardItem>) => Effect.Effect<void, FlowError>;
|
|
40
|
+
readonly start: (id: string) => Effect.Effect<void, FlowError>;
|
|
41
|
+
readonly complete: (id: string, result: BoardItemResult) => Effect.Effect<void, FlowError>;
|
|
42
|
+
readonly fail: (id: string, reason: string) => Effect.Effect<void, FlowError>;
|
|
43
|
+
readonly skip: (id: string, reason: string) => Effect.Effect<void, FlowError>;
|
|
44
|
+
readonly snapshot: Effect.Effect<Board, FlowError>;
|
|
45
|
+
}
|
|
46
|
+
/** The markdown board — every figure on it labelled estimated. */
|
|
47
|
+
export declare const renderBoard: (board: Board) => string;
|
|
48
|
+
/**
|
|
49
|
+
* The default adapter: `board.json` (versioned) plus a rendered `board.md`
|
|
50
|
+
* under `directory`. The JSON is the state, the markdown is the demo surface;
|
|
51
|
+
* both are rewritten on every mutation so a crash never leaves them apart.
|
|
52
|
+
*/
|
|
53
|
+
export declare const makeLocalBoardSync: (files: PlainFileStoreShape, directory: string, title: string) => BoardSyncShape;
|
|
54
|
+
/**
|
|
55
|
+
* Fan one lifecycle out to several boards (local file + ADO, typically).
|
|
56
|
+
* Mutations hit every board in order; `snapshot` reads the FIRST — the local
|
|
57
|
+
* board is the source of truth, the others are mirrors.
|
|
58
|
+
*/
|
|
59
|
+
export declare const composeBoardSync: (boards: ReadonlyArray<BoardSyncShape>) => BoardSyncShape;
|
|
60
|
+
export interface AdoBoardOptions {
|
|
61
|
+
/** Work item type created for each page. Default "Task". */
|
|
62
|
+
readonly workItemType?: string;
|
|
63
|
+
/** Tag identifying this board's items — the idempotency key. Default "llm4ts-convert". */
|
|
64
|
+
readonly tag?: string;
|
|
65
|
+
/** Lifecycle → System.State mapping. Defaults: New / Active / Closed. */
|
|
66
|
+
readonly states?: {
|
|
67
|
+
readonly planned?: string;
|
|
68
|
+
readonly active?: string;
|
|
69
|
+
readonly done?: string;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The stretch adapter (ADR 0012): the same lifecycle mapped onto Azure DevOps
|
|
74
|
+
* work items through the az-CLI AzureDevOpsTool (ADR 0011). Idempotent by
|
|
75
|
+
* title marker — `[<id>]` plus the board tag — so a re-run finds its items
|
|
76
|
+
* instead of duplicating them. Failure and skip are tags plus a comment,
|
|
77
|
+
* never invented states.
|
|
78
|
+
*/
|
|
79
|
+
export declare const makeAdoBoardSync: (ado: AzureDevOpsToolShape, boardTitle: string, options?: AdoBoardOptions | undefined) => Effect.Effect<BoardSyncShape, never, never>;
|
|
80
|
+
export {};
|
|
81
|
+
//# sourceMappingURL=BoardSync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BoardSync.d.ts","sourceRoot":"","sources":["../src/BoardSync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAa,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3E,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC5D,OAAO,EAAgC,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AASzF,eAAO,MAAM,YAAY,IAAI,CAAA;AAE7B,eAAO,MAAM,WAAW,8EAAsE,CAAA;AAC9F,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAA;;;;;;;;IAS/C,gFAAgF;;IAEhF,qEAAqE;;;;AATvE,qBAAa,SAAU,SAAQ,cAY7B;CAAG;;;;;AAEL,qBAAa,KAAM,SAAQ,UAGzB;CAAG;AAEL,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAClF,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAC9D,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAC1F,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAC7E,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAC7E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;CACnD;AAgCD,kEAAkE;AAClE,eAAO,MAAM,WAAW,GAAI,OAAO,KAAK,KAAG,MAuB1C,CAAA;AAkBD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,mBAAmB,EAC1B,WAAW,MAAM,EACjB,OAAO,MAAM,KACZ,cAmDF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,aAAa,CAAC,cAAc,CAAC,KAAG,cAgBxE,CAAA;AAED,MAAM,WAAW,eAAe;IAC9B,4DAA4D;IAC5D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,0FAA0F;IAC1F,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,yEAAyE;IACzE,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;QACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;QACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;CACF;AAOD;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,uIAuH3B,CAAA"}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Ref from "effect/Ref";
|
|
3
|
+
import * as Schema from "effect/Schema";
|
|
4
|
+
import { quoteWiql } from "./AzureDevOpsTool.js";
|
|
5
|
+
import { FlowAborted } from "./FlowError.js";
|
|
6
|
+
import { loadVersioned, saveVersioned } from "./Persistence.js";
|
|
7
|
+
// The progress board of the conversion scenario: a port with the work-item
|
|
8
|
+
// lifecycle (plan → start → complete/fail/skip) and two adapters — a local
|
|
9
|
+
// file board (the default, fully offline: board.json + rendered board.md)
|
|
10
|
+
// and an Azure DevOps adapter (the stretch goal) mapping the same lifecycle
|
|
11
|
+
// onto work items. Flows depend only on the port; which board the client
|
|
12
|
+
// sees is wiring, not policy.
|
|
13
|
+
export const BoardVersion = 1;
|
|
14
|
+
export const BoardStatus = Schema.Literals(["planned", "active", "done", "failed", "skipped"]);
|
|
15
|
+
export class BoardItem extends Schema.Class("BoardItem")({
|
|
16
|
+
id: Schema.String,
|
|
17
|
+
title: Schema.String,
|
|
18
|
+
wave: Schema.optionalKey(Schema.String),
|
|
19
|
+
status: BoardStatus,
|
|
20
|
+
branch: Schema.optionalKey(Schema.String),
|
|
21
|
+
reportPath: Schema.optionalKey(Schema.String),
|
|
22
|
+
/** Free-form note: a failure reason, a skip rationale, a triage disposition. */
|
|
23
|
+
detail: Schema.optionalKey(Schema.String),
|
|
24
|
+
/** ESTIMATES, never measurements — see EstimatedUsage (ADR 0012). */
|
|
25
|
+
estimatedTokens: Schema.optionalKey(Schema.Int),
|
|
26
|
+
estimatedCostUsd: Schema.optionalKey(Schema.Number)
|
|
27
|
+
}) {
|
|
28
|
+
}
|
|
29
|
+
export class Board extends Schema.Class("Board")({
|
|
30
|
+
title: Schema.String,
|
|
31
|
+
items: Schema.Array(BoardItem)
|
|
32
|
+
}) {
|
|
33
|
+
}
|
|
34
|
+
const sectionOrder = [
|
|
35
|
+
["active", "Active"],
|
|
36
|
+
["planned", "Planned"],
|
|
37
|
+
["done", "Done"],
|
|
38
|
+
["failed", "Failed"],
|
|
39
|
+
["skipped", "Skipped"]
|
|
40
|
+
];
|
|
41
|
+
const itemLine = (item) => {
|
|
42
|
+
const parts = [`- **${item.id}** — ${item.title}`];
|
|
43
|
+
if (item.wave !== undefined) {
|
|
44
|
+
parts.push(`(wave: ${item.wave})`);
|
|
45
|
+
}
|
|
46
|
+
if (item.branch !== undefined) {
|
|
47
|
+
parts.push(`branch \`${item.branch}\``);
|
|
48
|
+
}
|
|
49
|
+
if (item.reportPath !== undefined) {
|
|
50
|
+
parts.push(`[report](${item.reportPath})`);
|
|
51
|
+
}
|
|
52
|
+
if (item.estimatedTokens !== undefined || item.estimatedCostUsd !== undefined) {
|
|
53
|
+
const tokens = item.estimatedTokens === undefined ? "" : `~${item.estimatedTokens} tokens`;
|
|
54
|
+
const cost = item.estimatedCostUsd === undefined ? "" : `~$${item.estimatedCostUsd.toFixed(2)}`;
|
|
55
|
+
parts.push(`(${[tokens, cost].filter((part) => part.length > 0).join(", ")} — estimated)`);
|
|
56
|
+
}
|
|
57
|
+
if (item.detail !== undefined) {
|
|
58
|
+
parts.push(`— ${item.detail}`);
|
|
59
|
+
}
|
|
60
|
+
return parts.join(" ");
|
|
61
|
+
};
|
|
62
|
+
/** The markdown board — every figure on it labelled estimated. */
|
|
63
|
+
export const renderBoard = (board) => {
|
|
64
|
+
const lines = [`# Board: ${board.title}`, ""];
|
|
65
|
+
const counts = sectionOrder
|
|
66
|
+
.map(([status]) => `${status}: ${board.items.filter((item) => item.status === status).length}`)
|
|
67
|
+
.join(" · ");
|
|
68
|
+
lines.push(counts, "");
|
|
69
|
+
lines.push("All token and cost figures are ESTIMATES (character-count heuristics), not", "measurements.", "");
|
|
70
|
+
for (const [status, heading] of sectionOrder) {
|
|
71
|
+
const items = board.items.filter((item) => item.status === status);
|
|
72
|
+
if (items.length === 0) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
lines.push(`## ${heading}`, "");
|
|
76
|
+
for (const item of items) {
|
|
77
|
+
lines.push(itemLine(item));
|
|
78
|
+
}
|
|
79
|
+
lines.push("");
|
|
80
|
+
}
|
|
81
|
+
return lines.join("\n").trimEnd() + "\n";
|
|
82
|
+
};
|
|
83
|
+
const join = (root, path) => `${root.replace(/[\\/]+$/, "")}/${path.replace(/^[\\/]+/, "")}`;
|
|
84
|
+
const applyResult = (item, status, result) => BoardItem.make({
|
|
85
|
+
...item,
|
|
86
|
+
status,
|
|
87
|
+
...(result.branch === undefined ? {} : { branch: result.branch }),
|
|
88
|
+
...(result.reportPath === undefined ? {} : { reportPath: result.reportPath }),
|
|
89
|
+
...(result.detail === undefined ? {} : { detail: result.detail }),
|
|
90
|
+
...(result.estimatedTokens === undefined
|
|
91
|
+
? {}
|
|
92
|
+
: { estimatedTokens: Math.round(result.estimatedTokens) }),
|
|
93
|
+
...(result.estimatedCostUsd === undefined ? {} : { estimatedCostUsd: result.estimatedCostUsd })
|
|
94
|
+
});
|
|
95
|
+
/**
|
|
96
|
+
* The default adapter: `board.json` (versioned) plus a rendered `board.md`
|
|
97
|
+
* under `directory`. The JSON is the state, the markdown is the demo surface;
|
|
98
|
+
* both are rewritten on every mutation so a crash never leaves them apart.
|
|
99
|
+
*/
|
|
100
|
+
export const makeLocalBoardSync = (files, directory, title) => {
|
|
101
|
+
const jsonPath = join(directory, "board.json");
|
|
102
|
+
const markdownPath = join(directory, "board.md");
|
|
103
|
+
const load = loadVersioned(files, jsonPath, BoardVersion, Board).pipe(Effect.map((board) => board ?? Board.make({ title, items: [] })));
|
|
104
|
+
const save = (board) => saveVersioned(files, jsonPath, BoardVersion, Board, board).pipe(Effect.andThen(files.writeAtomic(markdownPath, renderBoard(board))));
|
|
105
|
+
const update = (id, transform) => Effect.gen(function* () {
|
|
106
|
+
const board = yield* load;
|
|
107
|
+
if (!board.items.some((item) => item.id === id)) {
|
|
108
|
+
return yield* FlowAborted.make({ message: `board has no item '${id}' — plan it first` });
|
|
109
|
+
}
|
|
110
|
+
yield* save(Board.make({
|
|
111
|
+
...board,
|
|
112
|
+
items: board.items.map((item) => (item.id === id ? transform(item) : item))
|
|
113
|
+
}));
|
|
114
|
+
});
|
|
115
|
+
return {
|
|
116
|
+
plan: (items) => Effect.gen(function* () {
|
|
117
|
+
const board = yield* load;
|
|
118
|
+
const known = new Map(board.items.map((item) => [item.id, item]));
|
|
119
|
+
// Known ids keep their lived state — re-planning must never demote a
|
|
120
|
+
// converted page back to "planned".
|
|
121
|
+
const merged = [...board.items, ...items.filter((item) => !known.has(item.id))];
|
|
122
|
+
yield* save(Board.make({ title: board.title, items: merged }));
|
|
123
|
+
}),
|
|
124
|
+
start: (id) => update(id, (item) => BoardItem.make({ ...item, status: "active" })),
|
|
125
|
+
complete: (id, result) => update(id, (item) => applyResult(item, "done", result)),
|
|
126
|
+
fail: (id, reason) => update(id, (item) => BoardItem.make({ ...item, status: "failed", detail: reason })),
|
|
127
|
+
skip: (id, reason) => update(id, (item) => BoardItem.make({ ...item, status: "skipped", detail: reason })),
|
|
128
|
+
snapshot: load
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
/**
|
|
132
|
+
* Fan one lifecycle out to several boards (local file + ADO, typically).
|
|
133
|
+
* Mutations hit every board in order; `snapshot` reads the FIRST — the local
|
|
134
|
+
* board is the source of truth, the others are mirrors.
|
|
135
|
+
*/
|
|
136
|
+
export const composeBoardSync = (boards) => {
|
|
137
|
+
const first = boards[0];
|
|
138
|
+
const each = (operation) => Effect.forEach(boards, operation, { discard: true });
|
|
139
|
+
return {
|
|
140
|
+
plan: (items) => each((board) => board.plan(items)),
|
|
141
|
+
start: (id) => each((board) => board.start(id)),
|
|
142
|
+
complete: (id, result) => each((board) => board.complete(id, result)),
|
|
143
|
+
fail: (id, reason) => each((board) => board.fail(id, reason)),
|
|
144
|
+
skip: (id, reason) => each((board) => board.skip(id, reason)),
|
|
145
|
+
snapshot: first === undefined
|
|
146
|
+
? Effect.succeed(Board.make({ title: "empty", items: [] }))
|
|
147
|
+
: first.snapshot
|
|
148
|
+
};
|
|
149
|
+
};
|
|
150
|
+
const markerQuery = (tag, id) => "SELECT [System.Id] FROM WorkItems WHERE " +
|
|
151
|
+
`[System.Tags] CONTAINS ${quoteWiql(tag)} AND ` +
|
|
152
|
+
`[System.Title] CONTAINS ${quoteWiql(`[${id}]`)}`;
|
|
153
|
+
/**
|
|
154
|
+
* The stretch adapter (ADR 0012): the same lifecycle mapped onto Azure DevOps
|
|
155
|
+
* work items through the az-CLI AzureDevOpsTool (ADR 0011). Idempotent by
|
|
156
|
+
* title marker — `[<id>]` plus the board tag — so a re-run finds its items
|
|
157
|
+
* instead of duplicating them. Failure and skip are tags plus a comment,
|
|
158
|
+
* never invented states.
|
|
159
|
+
*/
|
|
160
|
+
export const makeAdoBoardSync = Effect.fn("@llm4ts/flow/BoardSync.makeAdo")(function* (ado, boardTitle, options = {}) {
|
|
161
|
+
const workItemType = options.workItemType ?? "Task";
|
|
162
|
+
const tag = options.tag ?? "llm4ts-convert";
|
|
163
|
+
const states = {
|
|
164
|
+
planned: options.states?.planned ?? "New",
|
|
165
|
+
active: options.states?.active ?? "Active",
|
|
166
|
+
done: options.states?.done ?? "Closed"
|
|
167
|
+
};
|
|
168
|
+
const ids = yield* Ref.make(new Map());
|
|
169
|
+
const lookup = (id) => Effect.gen(function* () {
|
|
170
|
+
const cached = (yield* Ref.get(ids)).get(id);
|
|
171
|
+
if (cached !== undefined) {
|
|
172
|
+
return cached;
|
|
173
|
+
}
|
|
174
|
+
const found = yield* ado.wiqlIds(markerQuery(tag, id));
|
|
175
|
+
const first = found[0];
|
|
176
|
+
if (first === undefined) {
|
|
177
|
+
return yield* FlowAborted.make({
|
|
178
|
+
message: `no ADO work item tagged '${tag}' with '[${id}]' in its title — plan it first`
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
yield* Ref.update(ids, (current) => new Map(current).set(id, first));
|
|
182
|
+
return first;
|
|
183
|
+
});
|
|
184
|
+
return {
|
|
185
|
+
plan: (items) => Effect.gen(function* () {
|
|
186
|
+
for (const item of items) {
|
|
187
|
+
const existing = yield* ado.wiqlIds(markerQuery(tag, item.id));
|
|
188
|
+
const first = existing[0];
|
|
189
|
+
if (first !== undefined) {
|
|
190
|
+
yield* Ref.update(ids, (current) => new Map(current).set(item.id, first));
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
const created = yield* ado.createWorkItem(workItemType, `[${item.id}] ${item.title}`, item.detail ?? item.title, [tag]);
|
|
194
|
+
yield* Ref.update(ids, (current) => new Map(current).set(item.id, created.id));
|
|
195
|
+
if (states.planned !== "New") {
|
|
196
|
+
yield* ado.setState(created.id, states.planned);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}),
|
|
200
|
+
start: (id) => Effect.gen(function* () {
|
|
201
|
+
const workItem = yield* lookup(id);
|
|
202
|
+
yield* ado.setState(workItem, states.active);
|
|
203
|
+
}),
|
|
204
|
+
complete: (id, result) => Effect.gen(function* () {
|
|
205
|
+
const workItem = yield* lookup(id);
|
|
206
|
+
const parts = [
|
|
207
|
+
result.branch === undefined ? undefined : `Branch: ${result.branch}`,
|
|
208
|
+
result.reportPath === undefined ? undefined : `Report: ${result.reportPath}`,
|
|
209
|
+
result.estimatedTokens === undefined
|
|
210
|
+
? undefined
|
|
211
|
+
: `~${Math.round(result.estimatedTokens)} tokens (estimated)`,
|
|
212
|
+
result.estimatedCostUsd === undefined
|
|
213
|
+
? undefined
|
|
214
|
+
: `~$${result.estimatedCostUsd.toFixed(2)} (estimated)`,
|
|
215
|
+
result.detail
|
|
216
|
+
].filter((part) => part !== undefined);
|
|
217
|
+
if (parts.length > 0) {
|
|
218
|
+
yield* ado.writeComment(workItem, parts.join("\n"));
|
|
219
|
+
}
|
|
220
|
+
yield* ado.setState(workItem, states.done);
|
|
221
|
+
}),
|
|
222
|
+
fail: (id, reason) => Effect.gen(function* () {
|
|
223
|
+
const workItem = yield* lookup(id);
|
|
224
|
+
yield* ado.editTags(workItem, [`${tag}-failed`], []);
|
|
225
|
+
yield* ado.writeComment(workItem, `FAILED: ${reason}`);
|
|
226
|
+
}),
|
|
227
|
+
skip: (id, reason) => Effect.gen(function* () {
|
|
228
|
+
const workItem = yield* lookup(id);
|
|
229
|
+
yield* ado.editTags(workItem, [`${tag}-skipped`], []);
|
|
230
|
+
yield* ado.writeComment(workItem, `SKIPPED: ${reason}`);
|
|
231
|
+
}),
|
|
232
|
+
snapshot: Effect.gen(function* () {
|
|
233
|
+
const found = yield* ado.wiqlIds(`SELECT [System.Id] FROM WorkItems WHERE [System.Tags] CONTAINS ${quoteWiql(tag)}`);
|
|
234
|
+
const items = [];
|
|
235
|
+
for (const workItemId of found) {
|
|
236
|
+
const workItem = yield* ado.readWorkItem(workItemId);
|
|
237
|
+
const match = /^\[([^\]]+)\] (.*)$/.exec(workItem.title);
|
|
238
|
+
const failed = workItem.tags.includes(`${tag}-failed`);
|
|
239
|
+
const skipped = workItem.tags.includes(`${tag}-skipped`);
|
|
240
|
+
const status = failed
|
|
241
|
+
? "failed"
|
|
242
|
+
: skipped
|
|
243
|
+
? "skipped"
|
|
244
|
+
: workItem.state === states.done
|
|
245
|
+
? "done"
|
|
246
|
+
: workItem.state === states.active
|
|
247
|
+
? "active"
|
|
248
|
+
: "planned";
|
|
249
|
+
items.push(BoardItem.make({
|
|
250
|
+
id: match?.[1] ?? String(workItemId),
|
|
251
|
+
title: match?.[2] ?? workItem.title,
|
|
252
|
+
status
|
|
253
|
+
}));
|
|
254
|
+
}
|
|
255
|
+
return Board.make({ title: boardTitle, items });
|
|
256
|
+
})
|
|
257
|
+
};
|
|
258
|
+
});
|
|
259
|
+
//# sourceMappingURL=BoardSync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BoardSync.js","sourceRoot":"","sources":["../src/BoardSync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,GAAG,MAAM,YAAY,CAAA;AACjC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,SAAS,EAA6B,MAAM,sBAAsB,CAAA;AAC3E,OAAO,EAAE,WAAW,EAAkB,MAAM,gBAAgB,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,aAAa,EAA4B,MAAM,kBAAkB,CAAA;AAEzF,2EAA2E;AAC3E,2EAA2E;AAC3E,0EAA0E;AAC1E,4EAA4E;AAC5E,yEAAyE;AACzE,8BAA8B;AAE9B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAA;AAE7B,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAA;AAG9F,MAAM,OAAO,SAAU,SAAQ,MAAM,CAAC,KAAK,CAAY,WAAW,CAAC,CAAC;IAClE,EAAE,EAAE,MAAM,CAAC,MAAM;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IACzC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IAC7C,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IACzC,qEAAqE;IACrE,eAAe,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;IAC/C,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;CACpD,CAAC;CAAG;AAEL,MAAM,OAAO,KAAM,SAAQ,MAAM,CAAC,KAAK,CAAQ,OAAO,CAAC,CAAC;IACtD,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;CAC/B,CAAC;CAAG;AAoBL,MAAM,YAAY,GAAkD;IAClE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,SAAS,EAAE,SAAS,CAAC;CACvB,CAAA;AAED,MAAM,QAAQ,GAAG,CAAC,IAAe,EAAU,EAAE;IAC3C,MAAM,KAAK,GAAkB,CAAC,OAAO,IAAI,CAAC,EAAE,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IACjE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;IACpC,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,IAAI,CAAC,CAAA;IACzC,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;IAC5C,CAAC;IACD,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAC9E,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,SAAS,CAAA;QAC1F,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;QAC/F,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IAC5F,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IAChC,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACxB,CAAC,CAAA;AAED,kEAAkE;AAClE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAY,EAAU,EAAE;IAClD,MAAM,KAAK,GAAkB,CAAC,YAAY,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAA;IAC5D,MAAM,MAAM,GAAG,YAAY;SACxB,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;SAC9F,IAAI,CAAC,KAAK,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IACtB,KAAK,CAAC,IAAI,CACR,4EAA4E,EAC5E,eAAe,EACf,EAAE,CACH,CAAA;IACD,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAA;QAClE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,SAAQ;QACV,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,MAAM,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;QAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QAC5B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAA;AAC1C,CAAC,CAAA;AAED,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,IAAY,EAAU,EAAE,CAClD,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAA;AAEjE,MAAM,WAAW,GAAG,CAAC,IAAe,EAAE,MAAmB,EAAE,MAAuB,EAAa,EAAE,CAC/F,SAAS,CAAC,IAAI,CAAC;IACb,GAAG,IAAI;IACP,MAAM;IACN,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IACjE,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;IAC7E,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IACjE,GAAG,CAAC,MAAM,CAAC,eAAe,KAAK,SAAS;QACtC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;IAC5D,GAAG,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC;CAChG,CAAC,CAAA;AAEJ;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,KAA0B,EAC1B,SAAiB,EACjB,KAAa,EACG,EAAE;IAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;IAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IAEhD,MAAM,IAAI,GAAoC,aAAa,CACzD,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,KAAK,CACN,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IAExE,MAAM,IAAI,GAAG,CAAC,KAAY,EAAkC,EAAE,CAC5D,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CAC7D,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CACpE,CAAA;IAEH,MAAM,MAAM,GAAG,CACb,EAAU,EACV,SAAyC,EACT,EAAE,CAClC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,IAAI,CAAA;QACzB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAChD,OAAO,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,CAAC,CAAA;QAC1F,CAAC;QACD,KAAK,CAAC,CAAC,IAAI,CACT,KAAK,CAAC,IAAI,CAAC;YACT,GAAG,KAAK;YACR,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAC5E,CAAC,CACH,CAAA;IACH,CAAC,CAAC,CAAA;IAEJ,OAAO;QACL,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CACd,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,IAAI,CAAA;YACzB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAU,CAAC,CAAC,CAAA;YAC1E,qEAAqE;YACrE,oCAAoC;YACpC,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAC/E,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QAChE,CAAC,CAAC;QACJ,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClF,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACjF,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CACnB,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACrF,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CACnB,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACtF,QAAQ,EAAE,IAAI;KACf,CAAA;AACH,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAqC,EAAkB,EAAE;IACxF,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IACvB,MAAM,IAAI,GAAG,CACX,SAAoE,EACpC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IACzF,OAAO;QACL,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/C,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACrE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC7D,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC7D,QAAQ,EACN,KAAK,KAAK,SAAS;YACjB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3D,CAAC,CAAC,KAAK,CAAC,QAAQ;KACrB,CAAA;AACH,CAAC,CAAA;AAeD,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAU,EAAU,EAAE,CACtD,0CAA0C;IAC1C,0BAA0B,SAAS,CAAC,GAAG,CAAC,OAAO;IAC/C,2BAA2B,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAA;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,EAAE,CAAC,gCAAgC,CAAC,CAAC,QAAQ,CAAC,EACnF,GAAyB,EACzB,UAAkB,EAClB,UAA2B,EAAE;IAE7B,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,MAAM,CAAA;IACnD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,gBAAgB,CAAA;IAC3C,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,IAAI,KAAK;QACzC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,IAAI,QAAQ;QAC1C,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,IAAI,QAAQ;KACvC,CAAA;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAA8B,IAAI,GAAG,EAAE,CAAC,CAAA;IAEnE,MAAM,MAAM,GAAG,CAAC,EAAU,EAAoC,EAAE,CAC9D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC5C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,MAAM,CAAA;QACf,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;QACtD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACtB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;gBAC7B,OAAO,EAAE,4BAA4B,GAAG,YAAY,EAAE,iCAAiC;aACxF,CAAC,CAAA;QACJ,CAAC;QACD,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAA;QACpE,OAAO,KAAK,CAAA;IACd,CAAC,CAAC,CAAA;IAEJ,OAAO;QACL,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CACd,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC9D,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;gBACzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAA;oBACzE,SAAQ;gBACV,CAAC;gBACD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,cAAc,CACvC,YAAY,EACZ,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE,EAC5B,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EACzB,CAAC,GAAG,CAAC,CACN,CAAA;gBACD,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC9E,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;oBAC7B,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;gBACjD,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QACJ,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CACZ,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YAClC,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;QAC9C,CAAC,CAAC;QACJ,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CACvB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YAClC,MAAM,KAAK,GAAG;gBACZ,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE;gBACpE,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,UAAU,EAAE;gBAC5E,MAAM,CAAC,eAAe,KAAK,SAAS;oBAClC,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,qBAAqB;gBAC/D,MAAM,CAAC,gBAAgB,KAAK,SAAS;oBACnC,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,KAAK,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc;gBACzD,MAAM,CAAC,MAAM;aACd,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;YACtD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,KAAK,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YACrD,CAAC;YACD,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QAC5C,CAAC,CAAC;QACJ,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CACnB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YAClC,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC,EAAE,EAAE,CAAC,CAAA;YACpD,KAAK,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,WAAW,MAAM,EAAE,CAAC,CAAA;QACxD,CAAC,CAAC;QACJ,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CACnB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YAClC,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE,EAAE,CAAC,CAAA;YACrD,KAAK,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,MAAM,EAAE,CAAC,CAAA;QACzD,CAAC,CAAC;QACJ,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAC9B,kEAAkE,SAAS,CAAC,GAAG,CAAC,EAAE,CACnF,CAAA;YACD,MAAM,KAAK,GAAqB,EAAE,CAAA;YAClC,KAAK,MAAM,UAAU,IAAI,KAAK,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;gBACpD,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;gBACxD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,SAAS,CAAC,CAAA;gBACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,UAAU,CAAC,CAAA;gBACxD,MAAM,MAAM,GAAgB,MAAM;oBAChC,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,OAAO;wBACP,CAAC,CAAC,SAAS;wBACX,CAAC,CAAC,QAAQ,CAAC,KAAK,KAAK,MAAM,CAAC,IAAI;4BAC9B,CAAC,CAAC,MAAM;4BACR,CAAC,CAAC,QAAQ,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM;gCAChC,CAAC,CAAC,QAAQ;gCACV,CAAC,CAAC,SAAS,CAAA;gBACnB,KAAK,CAAC,IAAI,CACR,SAAS,CAAC,IAAI,CAAC;oBACb,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC;oBACpC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK;oBACnC,MAAM;iBACP,CAAC,CACH,CAAA;YACH,CAAC;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAA;QACjD,CAAC,CAAC;KACH,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import type { LlmServiceShape } from "@llm4ts/core/LlmService";
|
|
3
|
+
import { TokenUsage } from "@llm4ts/core/Models";
|
|
4
|
+
export interface EstimatedUsageOptions {
|
|
5
|
+
/** Pricing reference for the estimate — a `PriceList` model prefix. */
|
|
6
|
+
readonly referenceModel: string;
|
|
7
|
+
/** Characters per token for the estimate. Default 4. */
|
|
8
|
+
readonly charsPerToken?: number;
|
|
9
|
+
}
|
|
10
|
+
export declare const defaultReferenceModel = "claude-sonnet-4";
|
|
11
|
+
export declare const estimatedUsageOptionsFromEnv: (environment: Readonly<Record<string, string | undefined>>) => EstimatedUsageOptions;
|
|
12
|
+
/** The model label estimates are published under — never a real model id. */
|
|
13
|
+
export declare const estimatedModelLabel: (referenceModel: string) => string;
|
|
14
|
+
export declare const isEstimatedModel: (model: string | undefined) => boolean;
|
|
15
|
+
export declare const estimateUsage: (promptChars: number, completionChars: number, options: EstimatedUsageOptions) => TokenUsage;
|
|
16
|
+
export interface EstimatedUsageMeter {
|
|
17
|
+
/** The decorated service — use this in place of the raw connector. */
|
|
18
|
+
readonly service: LlmServiceShape;
|
|
19
|
+
/** Cumulative usage seen so far: backend-reported where present, estimated otherwise. */
|
|
20
|
+
readonly totals: Effect.Effect<TokenUsage | undefined>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Decorates a service so every request yields usage — real when the backend
|
|
24
|
+
* reported it, estimated (and labelled so) when it did not — and exposes the
|
|
25
|
+
* running totals for per-run reports.
|
|
26
|
+
*/
|
|
27
|
+
export declare const makeEstimatedUsageMeter: (service: LlmServiceShape, options: EstimatedUsageOptions) => Effect.Effect<EstimatedUsageMeter, never, never>;
|
|
28
|
+
//# sourceMappingURL=EstimatedUsage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EstimatedUsage.d.ts","sourceRoot":"","sources":["../src/EstimatedUsage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAIvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAY,UAAU,EAAgB,MAAM,qBAAqB,CAAA;AAYxE,MAAM,WAAW,qBAAqB;IACpC,uEAAuE;IACvE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,wDAAwD;IACxD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAChC;AAED,eAAO,MAAM,qBAAqB,oBAAoB,CAAA;AAEtD,eAAO,MAAM,4BAA4B,GACvC,aAAa,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,KACxD,qBAMF,CAAA;AAED,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,GAAI,gBAAgB,MAAM,KAAG,MAAuC,CAAA;AAEpG,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,GAAG,SAAS,KAAG,OACN,CAAA;AAKvD,eAAO,MAAM,aAAa,GACxB,aAAa,MAAM,EACnB,iBAAiB,MAAM,EACvB,SAAS,qBAAqB,KAC7B,UAOF,CAAA;AAqBD,MAAM,WAAW,mBAAmB;IAClC,sEAAsE;IACtE,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;IACjC,yFAAyF;IACzF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC,CAAA;CACvD;AA8CD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,gHA8ClC,CAAA"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Ref from "effect/Ref";
|
|
3
|
+
import * as Stream from "effect/Stream";
|
|
4
|
+
import { LlmChunk, TokenUsage } from "@llm4ts/core/Models";
|
|
5
|
+
import { estimateCostUsd } from "./PriceList.js";
|
|
6
|
+
export const defaultReferenceModel = "claude-sonnet-4";
|
|
7
|
+
export const estimatedUsageOptionsFromEnv = (environment) => {
|
|
8
|
+
const parsed = Number.parseInt(environment.LLM4TS_ESTIMATE_CHARS_PER_TOKEN ?? "", 10);
|
|
9
|
+
return {
|
|
10
|
+
referenceModel: environment.LLM4TS_ESTIMATE_MODEL?.trim() || defaultReferenceModel,
|
|
11
|
+
...(Number.isFinite(parsed) && parsed > 0 ? { charsPerToken: parsed } : {})
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
/** The model label estimates are published under — never a real model id. */
|
|
15
|
+
export const estimatedModelLabel = (referenceModel) => `estimated:${referenceModel}`;
|
|
16
|
+
export const isEstimatedModel = (model) => model !== undefined && model.startsWith("estimated:");
|
|
17
|
+
const tokensFor = (chars, charsPerToken) => Math.ceil(Math.max(0, chars) / charsPerToken);
|
|
18
|
+
export const estimateUsage = (promptChars, completionChars, options) => {
|
|
19
|
+
const charsPerToken = options.charsPerToken ?? 4;
|
|
20
|
+
const prompt = tokensFor(promptChars, charsPerToken);
|
|
21
|
+
const completion = tokensFor(completionChars, charsPerToken);
|
|
22
|
+
const base = TokenUsage.make({ prompt, completion, total: prompt + completion });
|
|
23
|
+
const costUsd = estimateCostUsd(options.referenceModel, base);
|
|
24
|
+
return costUsd === undefined ? base : TokenUsage.make({ ...base, costUsd });
|
|
25
|
+
};
|
|
26
|
+
const messagesChars = (messages) => messages.reduce((sum, message) => sum + message.content.length, 0);
|
|
27
|
+
const mergeTotals = (previous, usage) => {
|
|
28
|
+
const cached = [previous?.cached, usage.cached].flatMap((value) => value === undefined ? [] : [value]);
|
|
29
|
+
const cost = [previous?.costUsd, usage.costUsd].flatMap((value) => value === undefined ? [] : [value]);
|
|
30
|
+
return TokenUsage.make({
|
|
31
|
+
prompt: (previous?.prompt ?? 0) + usage.prompt,
|
|
32
|
+
completion: (previous?.completion ?? 0) + usage.completion,
|
|
33
|
+
total: (previous?.total ?? 0) + usage.total,
|
|
34
|
+
...(cached.length === 0 ? {} : { cached: cached.reduce((sum, value) => sum + value, 0) }),
|
|
35
|
+
...(cost.length === 0 ? {} : { costUsd: cost.reduce((sum, value) => sum + value, 0) })
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
const estimatedStream = (stream, promptChars, options, record) => Stream.unwrap(Effect.gen(function* () {
|
|
39
|
+
const sawUsage = yield* Ref.make(false);
|
|
40
|
+
const completionChars = yield* Ref.make(0);
|
|
41
|
+
const tapped = stream.pipe(Stream.tap((chunk) => Effect.gen(function* () {
|
|
42
|
+
yield* Ref.update(completionChars, (count) => count + chunk.delta.length);
|
|
43
|
+
if (chunk.usage !== undefined) {
|
|
44
|
+
yield* Ref.set(sawUsage, true);
|
|
45
|
+
yield* record(chunk.usage);
|
|
46
|
+
}
|
|
47
|
+
})));
|
|
48
|
+
// Appended only after a SUCCESSFUL stream that reported nothing: a
|
|
49
|
+
// failed request estimates nothing, and a backend that reported real
|
|
50
|
+
// usage is never double-counted.
|
|
51
|
+
const tail = Stream.unwrap(Effect.gen(function* () {
|
|
52
|
+
if (yield* Ref.get(sawUsage)) {
|
|
53
|
+
return Stream.empty;
|
|
54
|
+
}
|
|
55
|
+
const usage = estimateUsage(promptChars, yield* Ref.get(completionChars), options);
|
|
56
|
+
yield* record(usage);
|
|
57
|
+
return Stream.succeed(LlmChunk.make({
|
|
58
|
+
delta: "",
|
|
59
|
+
usage,
|
|
60
|
+
metadata: { model: estimatedModelLabel(options.referenceModel) }
|
|
61
|
+
}));
|
|
62
|
+
}));
|
|
63
|
+
return Stream.concat(tapped, tail);
|
|
64
|
+
}));
|
|
65
|
+
/**
|
|
66
|
+
* Decorates a service so every request yields usage — real when the backend
|
|
67
|
+
* reported it, estimated (and labelled so) when it did not — and exposes the
|
|
68
|
+
* running totals for per-run reports.
|
|
69
|
+
*/
|
|
70
|
+
export const makeEstimatedUsageMeter = Effect.fn("@llm4ts/flow/EstimatedUsage.make")(function* (service, options) {
|
|
71
|
+
const totals = yield* Ref.make(undefined);
|
|
72
|
+
const record = (usage) => Ref.update(totals, (previous) => mergeTotals(previous, usage));
|
|
73
|
+
const decorated = {
|
|
74
|
+
executeStream: (prompt) => estimatedStream(service.executeStream(prompt), prompt.length, options, record),
|
|
75
|
+
executeStreamWithHistory: (messages) => estimatedStream(service.executeStreamWithHistory(messages), messagesChars(messages), options, record),
|
|
76
|
+
executeWithTools: (prompt, tools) => service.executeWithTools(prompt, tools),
|
|
77
|
+
executeStructured: (prompt, schema, jsonSchema) => service
|
|
78
|
+
.executeStructured(prompt, schema, jsonSchema)
|
|
79
|
+
.pipe(Effect.tap((value) => record(estimateUsage(prompt.length, (JSON.stringify(value) ?? "").length, options)))),
|
|
80
|
+
executeStructuredWithUsage: (prompt, schema, jsonSchema) => service.executeStructuredWithUsage(prompt, schema, jsonSchema).pipe(Effect.flatMap(([value, usage, model]) => {
|
|
81
|
+
if (usage !== undefined) {
|
|
82
|
+
return record(usage).pipe(Effect.as([value, usage, model]));
|
|
83
|
+
}
|
|
84
|
+
const estimated = estimateUsage(prompt.length, (JSON.stringify(value) ?? "").length, options);
|
|
85
|
+
return record(estimated).pipe(Effect.as([value, estimated, estimatedModelLabel(options.referenceModel)]));
|
|
86
|
+
})),
|
|
87
|
+
isAvailable: service.isAvailable
|
|
88
|
+
};
|
|
89
|
+
return { service: decorated, totals: Ref.get(totals) };
|
|
90
|
+
});
|
|
91
|
+
//# sourceMappingURL=EstimatedUsage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EstimatedUsage.js","sourceRoot":"","sources":["../src/EstimatedUsage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,GAAG,MAAM,YAAY,CAAA;AACjC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAgB,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAkBhD,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CAAA;AAEtD,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,WAAyD,EAClC,EAAE;IACzB,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,+BAA+B,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;IACrF,OAAO;QACL,cAAc,EAAE,WAAW,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,qBAAqB;QAClF,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5E,CAAA;AACH,CAAC,CAAA;AAED,6EAA6E;AAC7E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,cAAsB,EAAU,EAAE,CAAC,aAAa,cAAc,EAAE,CAAA;AAEpG,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAyB,EAAW,EAAE,CACrE,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;AAEvD,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,aAAqB,EAAU,EAAE,CACjE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,aAAa,CAAC,CAAA;AAE/C,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,WAAmB,EACnB,eAAuB,EACvB,OAA8B,EAClB,EAAE;IACd,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,CAAA;IAChD,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,EAAE,aAAa,CAAC,CAAA;IACpD,MAAM,UAAU,GAAG,SAAS,CAAC,eAAe,EAAE,aAAa,CAAC,CAAA;IAC5D,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,CAAC,CAAA;IAChF,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;IAC7D,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;AAC7E,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,QAAgC,EAAU,EAAE,CACjE,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AAEpE,MAAM,WAAW,GAAG,CAAC,QAAgC,EAAE,KAAiB,EAAc,EAAE;IACtF,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAChE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CACnC,CAAA;IACD,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAChE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CACnC,CAAA;IACD,OAAO,UAAU,CAAC,IAAI,CAAC;QACrB,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM;QAC9C,UAAU,EAAE,CAAC,QAAQ,EAAE,UAAU,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU;QAC1D,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK;QAC3C,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;QACzF,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;KACvF,CAAC,CAAA;AACJ,CAAC,CAAA;AASD,MAAM,eAAe,GAAG,CACtB,MAAyC,EACzC,WAAmB,EACnB,OAA8B,EAC9B,MAAkD,EACf,EAAE,CACrC,MAAM,CAAC,MAAM,CACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CACxB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACnB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACzE,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9B,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;YAC9B,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC,CAAC,CACH,CACF,CAAA;IACD,mEAAmE;IACnE,qEAAqE;IACrE,iCAAiC;IACjC,MAAM,IAAI,GAAsC,MAAM,CAAC,MAAM,CAC3D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC,KAAK,CAAA;QACrB,CAAC;QACD,MAAM,KAAK,GAAG,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,CAAA;QAClF,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACpB,OAAO,MAAM,CAAC,OAAO,CACnB,QAAQ,CAAC,IAAI,CAAC;YACZ,KAAK,EAAE,EAAE;YACT,KAAK;YACL,QAAQ,EAAE,EAAE,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;SACjE,CAAC,CACH,CAAA;IACH,CAAC,CAAC,CACH,CAAA;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AACpC,CAAC,CAAC,CACH,CAAA;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,EAAE,CAAC,kCAAkC,CAAC,CAAC,QAAQ,CAAC,EAC5F,OAAwB,EACxB,OAA8B;IAE9B,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAyB,SAAS,CAAC,CAAA;IACjE,MAAM,MAAM,GAAG,CAAC,KAAiB,EAAuB,EAAE,CACxD,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;IAEhE,MAAM,SAAS,GAAoB;QACjC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CACxB,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;QAChF,wBAAwB,EAAE,CAAC,QAAQ,EAAE,EAAE,CACrC,eAAe,CACb,OAAO,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAC1C,aAAa,CAAC,QAAQ,CAAC,EACvB,OAAO,EACP,MAAM,CACP;QACH,gBAAgB,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC;QAC5E,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAChD,OAAO;aACJ,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC;aAC7C,IAAI,CACH,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACnB,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CACpF,CACF;QACL,0BAA0B,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CACzD,OAAO,CAAC,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,IAAI,CACjE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;YACvC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC,CAAC,CAAA;YACtE,CAAC;YACD,MAAM,SAAS,GAAG,aAAa,CAC7B,MAAM,CAAC,MAAM,EACb,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EACpC,OAAO,CACR,CAAA;YACD,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAC3B,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAU,CAAC,CACpF,CAAA;QACH,CAAC,CAAC,CACH;QACH,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAA;IACD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAA;AACxD,CAAC,CAAC,CAAA"}
|
package/dist/Pack.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export interface Pack {
|
|
|
19
19
|
readonly source: string;
|
|
20
20
|
readonly scaffold: string | undefined;
|
|
21
21
|
readonly sources: string | undefined;
|
|
22
|
+
readonly exclude: string | undefined;
|
|
22
23
|
readonly programs: string | undefined;
|
|
23
24
|
readonly specsDir: string;
|
|
24
25
|
readonly featuresDir: string;
|
package/dist/Pack.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pack.d.ts","sourceRoot":"","sources":["../src/Pack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAEvD,eAAO,MAAM,kBAAkB,8DAAsD,CAAA;AACrF,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC,IAAI,CAAA;;;;;AAE/D,qBAAa,gBAAiB,SAAQ,qBAGpC;CAAG;AAEL,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC/D,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IAClD,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAA;IACtC,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IAClD,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;IAC9C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;IAC5C,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAClD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAIpC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;IACzC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IAClE,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;IAIrD,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAA;CAC/C;AA0HD,eAAO,MAAM,QAAQ,+
|
|
1
|
+
{"version":3,"file":"Pack.d.ts","sourceRoot":"","sources":["../src/Pack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAEvD,eAAO,MAAM,kBAAkB,8DAAsD,CAAA;AACrF,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC,IAAI,CAAA;;;;;AAE/D,qBAAa,gBAAiB,SAAQ,qBAGpC;CAAG;AAEL,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAIpC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC/D,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IAClD,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAA;IACtC,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IAClD,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;IAC9C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;IAC5C,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAClD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAIpC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;IACzC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IAClE,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;IAIrD,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAA;CAC/C;AA0HD,eAAO,MAAM,QAAQ,+GAgFnB,CAAA;AAEF,eAAO,MAAM,gBAAgB,GAC3B,WAAW,cAAc,EACzB,WAAW,MAAM,EACjB,QAAQ,MAAM,KACb,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CACgC,CAAA"}
|
package/dist/Pack.js
CHANGED
|
@@ -128,11 +128,18 @@ export const loadPack = Effect.fn("@llm4ts/flow/Pack.load")(function* (workspace
|
|
|
128
128
|
message: `pack manifest 'programFiles:' is not a valid regex template: ${programFiles}`
|
|
129
129
|
});
|
|
130
130
|
}
|
|
131
|
+
const exclude = fields.exclude;
|
|
132
|
+
if (exclude !== undefined && !isValidRegExp(exclude)) {
|
|
133
|
+
return yield* PlanParseError.make({
|
|
134
|
+
message: `pack manifest 'exclude:' is not a valid regex: ${exclude}`
|
|
135
|
+
});
|
|
136
|
+
}
|
|
131
137
|
const pack = {
|
|
132
138
|
name: manifest.name,
|
|
133
139
|
source: fields.source ?? "",
|
|
134
140
|
scaffold: fields.scaffold,
|
|
135
141
|
sources: fields.sources,
|
|
142
|
+
exclude,
|
|
136
143
|
programs: fields.programs,
|
|
137
144
|
specsDir: fields["specs-dir"] ?? "docs/specs",
|
|
138
145
|
featuresDir: fields["features-dir"] ?? "features",
|
package/dist/Pack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pack.js","sourceRoot":"","sources":["../src/Pack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAiB,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAEvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAA;AAGrF,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,KAAK,CAAmB,kBAAkB,CAAC,CAAC;IACvF,QAAQ,EAAE,kBAAkB;IAC5B,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;CAC1C,CAAC;CAAG;
|
|
1
|
+
{"version":3,"file":"Pack.js","sourceRoot":"","sources":["../src/Pack.ts"],"names":[],"mappings":"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"}
|