tuff-lil-unit 0.1.0 → 0.1.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/README.md +1 -0
- package/dist/budget.d.ts +3 -1
- package/dist/budget.d.ts.map +1 -1
- package/dist/budget.js +6 -0
- package/dist/budget.js.map +1 -1
- package/dist/context.d.ts +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +2 -1
- package/dist/context.js.map +1 -1
- package/dist/index.d.ts +1 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -4
- package/dist/index.js.map +1 -1
- package/dist/providers/base.d.ts +0 -3
- package/dist/providers/base.d.ts.map +1 -1
- package/dist/providers/base.js +0 -6
- package/dist/providers/base.js.map +1 -1
- package/dist/providers/claude-cli.d.ts +2 -0
- package/dist/providers/claude-cli.d.ts.map +1 -1
- package/dist/providers/claude-cli.js +31 -37
- package/dist/providers/claude-cli.js.map +1 -1
- package/dist/state.d.ts +2 -2
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +4 -4
- package/dist/state.js.map +1 -1
- package/dist/tuff.d.ts.map +1 -1
- package/dist/tuff.js +2 -3
- package/dist/tuff.js.map +1 -1
- package/dist/upsert.d.ts.map +1 -1
- package/dist/upsert.js +15 -5
- package/dist/upsert.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
package/dist/budget.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { TokenUsage } from './types.js';
|
|
2
|
+
export declare class BudgetExceededError extends Error {
|
|
3
|
+
constructor(message: string);
|
|
4
|
+
}
|
|
2
5
|
export declare class BudgetManager {
|
|
3
6
|
#private;
|
|
4
7
|
constructor(globalBudget?: {
|
|
5
8
|
tokens: number;
|
|
6
|
-
timeMs?: number;
|
|
7
9
|
});
|
|
8
10
|
consume(usage: TokenUsage): void;
|
|
9
11
|
canAfford(estimatedTokens: number): boolean;
|
package/dist/budget.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,qBAAa,aAAa;;gBAIZ,YAAY,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,aAAa;;gBAIZ,YAAY,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE;IAI7C,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAKhC,SAAS,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO;IAK3C,UAAU,IAAI,OAAO;IAKrB,SAAS,IAAI,MAAM;IAKnB,SAAS,IAAI,MAAM;CAGpB"}
|
package/dist/budget.js
CHANGED
package/dist/budget.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"budget.js","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IACxB,aAAa,
|
|
1
|
+
{"version":3,"file":"budget.js","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,MAAM,OAAO,aAAa;IACxB,aAAa,CAAsB;IACnC,UAAU,GAAW,CAAC,CAAC;IAEvB,YAAY,YAAiC;QAC3C,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAED,OAAO,CAAC,KAAiB;QACvB,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,CAAC,CAAC;QACzF,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC;IAC5B,CAAC;IAED,SAAS,CAAC,eAAuB;QAC/B,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC;QACrC,OAAO,IAAI,CAAC,UAAU,GAAG,eAAe,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;IACxE,CAAC;IAED,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO,KAAK,CAAC;QACtC,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;IACrD,CAAC;IAED,SAAS;QACP,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO,QAAQ,CAAC;QACzC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF"}
|
package/dist/context.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type Database from 'better-sqlite3';
|
|
2
2
|
import { BudgetManager } from './budget.js';
|
|
3
|
-
import {
|
|
3
|
+
import type { Provider } from './providers/base.js';
|
|
4
4
|
import { StateManager } from './state.js';
|
|
5
5
|
import type { Progress, StepBudget } from './types.js';
|
|
6
6
|
/** Default token estimator: ~4 chars per token, conservative (overestimates = safer for budgets). */
|
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAKpD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAc,UAAU,EAAE,MAAM,YAAY,CAAC;AAGnE,qGAAqG;AACrG,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAWD,qBAAa,UAAW,SAAQ,KAAK;gBACvB,OAAO,SAA0B;CAI9C;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wGAAwG;IACxG,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,yFAAyF;IACzF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC1C,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;IACpB,aAAa,EAAE,aAAa,CAAC;IAC7B,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,SAAS,CAAC,EAAE;QACV,SAAS,CAAC,EAAE,QAAQ,CAAC;QACrB,MAAM,CAAC,EAAE,QAAQ,CAAC;QAClB,UAAU,CAAC,EAAE,QAAQ,CAAC;KACvB,CAAC;CACH;AAED,qBAAa,OAAO;;IAsBlB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;gBAEnB,MAAM,EAAE,aAAa;IAiBjC,8FAA8F;IAC9F,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI;IA2ClD;;;;;;;OAOG;IACG,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAoDlF;;;OAGG;IACG,MAAM,CAAC,KAAK,EAAE,OAAO,EACzB,KAAK,EAAE,KAAK,EAAE,EACd,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC;QAC7B,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;QACpC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,GACA,OAAO,CAAC,MAAM,CAAC;IAkBlB,QAAQ,CAAC,KAAK;QACZ;;;;;;WAMG;yBACc,MAAM,SAAS,MAAM,UAAU,MAAM,SAAS,UAAU,KAAG,OAAO,CAAC,OAAO,CAAC;MAe5F;IAGF,QAAQ,CAAC,KAAK;oBACA,CAAC,MACP,MAAM,SACH,MAAM,UACL,MAAM,SACP,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1C,OAAO,CAAC,CAAC,CAAC;iBAgBJ,CAAC,MACJ,MAAM,SACH,MAAM,UACL,MAAM,SACP,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1C,OAAO,CAAC,CAAC,CAAC;MAeb;CACH"}
|
package/dist/context.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import pLimit from 'p-limit';
|
|
2
2
|
import pRetry from 'p-retry';
|
|
3
|
-
import { BudgetExceededError } from './
|
|
3
|
+
import { BudgetExceededError } from './budget.js';
|
|
4
4
|
import { ClaudeCLIProvider } from './providers/claude-cli.js';
|
|
5
5
|
import { createAnthropicProvider } from './providers/anthropic.js';
|
|
6
6
|
import { createOpenAIProvider } from './providers/openai.js';
|
|
@@ -149,6 +149,7 @@ export class Context {
|
|
|
149
149
|
if (this.#signal.aborted) {
|
|
150
150
|
throw new AbortError();
|
|
151
151
|
}
|
|
152
|
+
this.#stepUsage.delete(id);
|
|
152
153
|
const durationMs = Date.now() - startTime;
|
|
153
154
|
this.#state.setStepFailure(id, String(error), durationMs);
|
|
154
155
|
throw error;
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,MAAM,MAAM,SAAS,CAAC;AAE7B,OAAO,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
export { tuff } from './tuff.js';
|
|
2
2
|
export { AbortError, estimateTokens } from './context.js';
|
|
3
|
+
export { BudgetExceededError } from './budget.js';
|
|
3
4
|
export { upsertRow, autoStringify } from './upsert.js';
|
|
4
5
|
export { syncSchema } from './schema-sync.js';
|
|
5
6
|
export { SCHEMA_SQL } from './schema.js';
|
|
6
|
-
export { BudgetExceededError } from './providers/base.js';
|
|
7
|
-
export { ClaudeCLIProvider } from './providers/claude-cli.js';
|
|
8
|
-
export { createOpenAIProvider } from './providers/openai.js';
|
|
9
|
-
export { createAnthropicProvider } from './providers/anthropic.js';
|
|
10
7
|
export type { Context, StepOptions, StageOptions } from './context.js';
|
|
11
8
|
export type { TuffRun, TuffStep, TuffStepFailure } from './schema.js';
|
|
12
9
|
export type { DurableConfig, Progress, StepBudget, TokenUsage, ProviderResult, } from './types.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACvE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACtE,YAAY,EACV,aAAa,EACb,QAAQ,EACR,UAAU,EACV,UAAU,EACV,cAAc,GACf,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
export { tuff } from './tuff.js';
|
|
2
2
|
export { AbortError, estimateTokens } from './context.js';
|
|
3
|
+
export { BudgetExceededError } from './budget.js';
|
|
3
4
|
export { upsertRow, autoStringify } from './upsert.js';
|
|
4
5
|
export { syncSchema } from './schema-sync.js';
|
|
5
6
|
export { SCHEMA_SQL } from './schema.js';
|
|
6
|
-
export { BudgetExceededError } from './providers/base.js';
|
|
7
|
-
export { ClaudeCLIProvider } from './providers/claude-cli.js';
|
|
8
|
-
export { createOpenAIProvider } from './providers/openai.js';
|
|
9
|
-
export { createAnthropicProvider } from './providers/anthropic.js';
|
|
10
7
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/providers/base.d.ts
CHANGED
|
@@ -4,9 +4,6 @@ export declare class RateLimitError extends Error {
|
|
|
4
4
|
retryAfterMs?: number | undefined;
|
|
5
5
|
constructor(message: string, retryAfterMs?: number | undefined);
|
|
6
6
|
}
|
|
7
|
-
export declare class BudgetExceededError extends Error {
|
|
8
|
-
constructor(message: string);
|
|
9
|
-
}
|
|
10
7
|
export interface Provider {
|
|
11
8
|
execute(prompt: string, options: {
|
|
12
9
|
model: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/providers/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,aAAa,EAAE,MAAM,IAAI,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,aAAa,CAAC;AAE9D,qBAAa,cAAe,SAAQ,KAAK;IAG9B,YAAY,CAAC,EAAE,MAAM;gBAD5B,OAAO,EAAE,MAAM,EACR,YAAY,CAAC,EAAE,MAAM,YAAA;CAK/B;AAED,
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/providers/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,aAAa,EAAE,MAAM,IAAI,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,aAAa,CAAC;AAE9D,qBAAa,cAAe,SAAQ,KAAK;IAG9B,YAAY,CAAC,EAAE,MAAM;gBAD5B,OAAO,EAAE,MAAM,EACR,YAAY,CAAC,EAAE,MAAM,YAAA;CAK/B;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,CACL,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7F,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5B;AAED,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAiBtF;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,aAAa,EAC1C,OAAO,CAAC,EAAE;IAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,GACzC,QAAQ,CAkEV"}
|
package/dist/providers/base.js
CHANGED
|
@@ -7,12 +7,6 @@ export class RateLimitError extends Error {
|
|
|
7
7
|
this.name = 'RateLimitError';
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
export class BudgetExceededError extends Error {
|
|
11
|
-
constructor(message) {
|
|
12
|
-
super(message);
|
|
13
|
-
this.name = 'BudgetExceededError';
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
10
|
export function extractRetryAfter(headers) {
|
|
17
11
|
if (!headers)
|
|
18
12
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/providers/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAsB,MAAM,IAAI,CAAC;AAGtE,MAAM,OAAO,cAAe,SAAQ,KAAK;IAG9B;IAFT,YACE,OAAe,EACR,YAAqB;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFR,iBAAY,GAAZ,YAAY,CAAS;QAG5B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/providers/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,8 @@ import { spawn } from 'node:child_process';
|
|
|
4
4
|
export declare function parseTranscriptTokens(filePath: string): TokenUsage;
|
|
5
5
|
export declare function createWorkerDir(jobId: string): string;
|
|
6
6
|
export declare function deriveTranscriptDir(workDir: string): string;
|
|
7
|
+
/** Poll for a .jsonl transcript file in the given directory, waiting up to timeoutMs. */
|
|
8
|
+
export declare function findTranscriptFile(transcriptDir: string, timeoutMs?: number): Promise<string | undefined>;
|
|
7
9
|
export declare function cleanupWorkerDir(workDir: string): void;
|
|
8
10
|
export declare function monitorBudget(transcriptDir: string, budgetTokens: number, proc: ReturnType<typeof spawn>, signal?: AbortSignal): Promise<TokenUsage>;
|
|
9
11
|
export declare class ClaudeCLIProvider implements Provider {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-cli.d.ts","sourceRoot":"","sources":["../../src/providers/claude-cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"claude-cli.d.ts","sourceRoot":"","sources":["../../src/providers/claude-cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAW3C,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CA8BlE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIrD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI3D;AAED,yFAAyF;AACzF,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,MAAM,EACrB,SAAS,GAAE,MAAa,GACvB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiB7B;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAMtD;AAED,wBAAsB,aAAa,CACjC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CA4CrB;AAED,qBAAa,iBAAkB,YAAW,QAAQ;IAC1C,OAAO,CACX,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7F,OAAO,CAAC,cAAc,CAAC;CAuF3B"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
|
-
import { mkdirSync, rmSync, realpathSync, readFileSync,
|
|
2
|
+
import { mkdirSync, rmSync, realpathSync, readFileSync, readdirSync, } from 'node:fs';
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
import { join } from 'node:path';
|
|
5
5
|
export function parseTranscriptTokens(filePath) {
|
|
6
|
-
|
|
6
|
+
let content;
|
|
7
|
+
try {
|
|
8
|
+
content = readFileSync(filePath, 'utf-8');
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
7
11
|
return { inputTokens: 0, outputTokens: 0, cacheCreationTokens: 0, cacheReadTokens: 0 };
|
|
8
12
|
}
|
|
9
|
-
const content = readFileSync(filePath, 'utf-8');
|
|
10
13
|
const lines = content.trim().split('\n').filter((line) => line.length > 0);
|
|
11
14
|
let inputTokens = 0;
|
|
12
15
|
let outputTokens = 0;
|
|
@@ -39,24 +42,15 @@ export function deriveTranscriptDir(workDir) {
|
|
|
39
42
|
const projectDir = realPath.replace(/\//g, '-');
|
|
40
43
|
return join(homedir(), '.claude', 'projects', projectDir);
|
|
41
44
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
rmSync(workDir, { recursive: true, force: true });
|
|
45
|
-
}
|
|
46
|
-
catch {
|
|
47
|
-
// Best-effort cleanup
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
export async function monitorBudget(transcriptDir, budgetTokens, proc, signal) {
|
|
45
|
+
/** Poll for a .jsonl transcript file in the given directory, waiting up to timeoutMs. */
|
|
46
|
+
export async function findTranscriptFile(transcriptDir, timeoutMs = 5000) {
|
|
51
47
|
const waitStart = Date.now();
|
|
52
|
-
|
|
53
|
-
while (Date.now() - waitStart < 5000) {
|
|
48
|
+
while (Date.now() - waitStart < timeoutMs) {
|
|
54
49
|
try {
|
|
55
|
-
const files =
|
|
50
|
+
const files = readdirSync(transcriptDir);
|
|
56
51
|
const jsonlFiles = files.filter((f) => f.endsWith('.jsonl') && !f.includes('subagents'));
|
|
57
52
|
if (jsonlFiles.length > 0) {
|
|
58
|
-
|
|
59
|
-
break;
|
|
53
|
+
return join(transcriptDir, jsonlFiles[0]);
|
|
60
54
|
}
|
|
61
55
|
}
|
|
62
56
|
catch {
|
|
@@ -64,6 +58,18 @@ export async function monitorBudget(transcriptDir, budgetTokens, proc, signal) {
|
|
|
64
58
|
}
|
|
65
59
|
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
66
60
|
}
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
export function cleanupWorkerDir(workDir) {
|
|
64
|
+
try {
|
|
65
|
+
rmSync(workDir, { recursive: true, force: true });
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
// Best-effort cleanup
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export async function monitorBudget(transcriptDir, budgetTokens, proc, signal) {
|
|
72
|
+
const transcriptPath = await findTranscriptFile(transcriptDir);
|
|
67
73
|
if (!transcriptPath) {
|
|
68
74
|
throw new Error('Transcript not found after 5s');
|
|
69
75
|
}
|
|
@@ -79,7 +85,7 @@ export async function monitorBudget(transcriptDir, budgetTokens, proc, signal) {
|
|
|
79
85
|
try {
|
|
80
86
|
const usage = parseTranscriptTokens(transcriptPath);
|
|
81
87
|
finalUsage = usage;
|
|
82
|
-
const totalTokens = usage.inputTokens + usage.outputTokens + (usage.cacheCreationTokens
|
|
88
|
+
const totalTokens = usage.inputTokens + usage.outputTokens + (usage.cacheCreationTokens ?? 0);
|
|
83
89
|
if (totalTokens > budgetTokens) {
|
|
84
90
|
proc.kill('SIGTERM');
|
|
85
91
|
clearInterval(intervalId);
|
|
@@ -111,8 +117,9 @@ export class ClaudeCLIProvider {
|
|
|
111
117
|
try {
|
|
112
118
|
workDir = createWorkerDir(jobId);
|
|
113
119
|
const transcriptDir = deriveTranscriptDir(workDir);
|
|
114
|
-
// Strip CLAUDECODE
|
|
115
|
-
|
|
120
|
+
// Strip CLAUDECODE (nested-session guard) and ANTHROPIC_API_KEY (CLI uses
|
|
121
|
+
// its own stored credentials; a caller-injected key would override them)
|
|
122
|
+
const { CLAUDECODE: _cc, ANTHROPIC_API_KEY: _ak, ...spawnEnv } = process.env;
|
|
116
123
|
const proc = spawn('claude', ['-p', '--model', options.model], {
|
|
117
124
|
cwd: workDir,
|
|
118
125
|
env: spawnEnv,
|
|
@@ -157,25 +164,12 @@ export class ClaudeCLIProvider {
|
|
|
157
164
|
usage = await monitorPromise;
|
|
158
165
|
}
|
|
159
166
|
else {
|
|
160
|
-
const
|
|
161
|
-
let transcriptPath;
|
|
162
|
-
while (Date.now() - waitStart < 5000) {
|
|
163
|
-
try {
|
|
164
|
-
const files = existsSync(transcriptDir) ? readdirSync(transcriptDir) : [];
|
|
165
|
-
const jsonlFiles = files.filter((f) => f.endsWith('.jsonl') && !f.includes('subagents'));
|
|
166
|
-
if (jsonlFiles.length > 0) {
|
|
167
|
-
transcriptPath = join(transcriptDir, jsonlFiles[0]);
|
|
168
|
-
break;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
catch {
|
|
172
|
-
// Directory may not exist yet
|
|
173
|
-
}
|
|
174
|
-
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
175
|
-
}
|
|
167
|
+
const transcriptPath = await findTranscriptFile(transcriptDir);
|
|
176
168
|
usage = transcriptPath ? parseTranscriptTokens(transcriptPath) : { inputTokens: 0, outputTokens: 0 };
|
|
177
169
|
}
|
|
178
|
-
|
|
170
|
+
// A non-zero exit from a monitored run means monitorBudget sent SIGTERM —
|
|
171
|
+
// return partial output rather than throwing.
|
|
172
|
+
if (exitCode !== 0 && !monitorPromise) {
|
|
179
173
|
throw new Error(`Claude CLI exited with code ${exitCode}: ${stderr}`);
|
|
180
174
|
}
|
|
181
175
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-cli.js","sourceRoot":"","sources":["../../src/providers/claude-cli.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EACL,SAAS,EACT,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"claude-cli.js","sourceRoot":"","sources":["../../src/providers/claude-cli.ts"],"names":[],"mappings":"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"}
|
package/dist/state.d.ts
CHANGED
|
@@ -4,8 +4,8 @@ import type { TokenUsage } from './types.js';
|
|
|
4
4
|
export declare class StateManager {
|
|
5
5
|
#private;
|
|
6
6
|
constructor(db: Database.Database, runId: string);
|
|
7
|
-
initRun(
|
|
8
|
-
getRun(
|
|
7
|
+
initRun(config: unknown): void;
|
|
8
|
+
getRun(): TuffRun | undefined;
|
|
9
9
|
/**
|
|
10
10
|
* Returns the deserialized output for a step, or undefined if not found.
|
|
11
11
|
* Step functions must return JSON-serializable values — Date, Buffer, and
|
package/dist/state.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,qBAAa,YAAY;;gBAIX,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM;IAKhD,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,qBAAa,YAAY;;gBAIX,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM;IAKhD,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAO9B,MAAM,IAAI,OAAO,GAAG,SAAS;IAI7B;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAShC,OAAO,CACL,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,EACf,KAAK,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,EACrD,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI;IAoCP,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAYxE,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAM3D,6EAA6E;IAC7E,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAWhC,uFAAuF;IACvF,YAAY,IAAI,MAAM;IAOtB,6FAA6F;IAC7F,eAAe,IAAI,UAAU;CAU9B"}
|
package/dist/state.js
CHANGED
|
@@ -5,12 +5,12 @@ export class StateManager {
|
|
|
5
5
|
this.#db = db;
|
|
6
6
|
this.#runId = runId;
|
|
7
7
|
}
|
|
8
|
-
initRun(
|
|
8
|
+
initRun(config) {
|
|
9
9
|
const now = new Date().toISOString();
|
|
10
|
-
this.#db.prepare('INSERT INTO tuff_runs (id, config, created_at, updated_at) VALUES (?, ?, ?, ?)').run(
|
|
10
|
+
this.#db.prepare('INSERT INTO tuff_runs (id, config, created_at, updated_at) VALUES (?, ?, ?, ?)').run(this.#runId, JSON.stringify(config), now, now);
|
|
11
11
|
}
|
|
12
|
-
getRun(
|
|
13
|
-
return this.#db.prepare('SELECT * FROM tuff_runs WHERE id = ?').get(
|
|
12
|
+
getRun() {
|
|
13
|
+
return this.#db.prepare('SELECT * FROM tuff_runs WHERE id = ?').get(this.#runId);
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
16
|
* Returns the deserialized output for a step, or undefined if not found.
|
package/dist/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,YAAY;IACvB,GAAG,CAAoB;IACvB,MAAM,CAAS;IAEf,YAAY,EAAqB,EAAE,KAAa;QAC9C,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
|
package/dist/tuff.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tuff.d.ts","sourceRoot":"","sources":["../src/tuff.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAIvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;GAGG;AACH,wBAAsB,IAAI,CAAC,CAAC,EAC1B,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"tuff.d.ts","sourceRoot":"","sources":["../src/tuff.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAIvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;GAGG;AACH,wBAAsB,IAAI,CAAC,CAAC,EAC1B,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,CAAC,CA+DZ"}
|
package/dist/tuff.js
CHANGED
|
@@ -33,10 +33,9 @@ export async function tuff(id, config, fn) {
|
|
|
33
33
|
syncSchema(db, [...SCHEMA_SQL, ...(config.setup ?? [])]);
|
|
34
34
|
const state = new StateManager(db, id);
|
|
35
35
|
// Resume detection: if run exists, continue; otherwise initialize
|
|
36
|
-
|
|
37
|
-
if (!existingRun) {
|
|
36
|
+
if (!state.getRun()) {
|
|
38
37
|
const { setup: _setup, ...serializableConfig } = config;
|
|
39
|
-
state.initRun(
|
|
38
|
+
state.initRun(serializableConfig);
|
|
40
39
|
}
|
|
41
40
|
// Restore budget from prior run so remaining budget is accurate on resume
|
|
42
41
|
const budgetManager = new BudgetManager(config.budget);
|
package/dist/tuff.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tuff.js","sourceRoot":"","sources":["../src/tuff.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,EAAU,EACV,MAAqB,EACrB,EAAgC;IAEhC,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAChE,IAAI,CAAC,MAAM,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACpE,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QAC1G,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC1C,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAChC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAChC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,UAAU,CAAC,CAAC;IACtD,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAEjC,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAEzD,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAEvC,kEAAkE;IAClE,
|
|
1
|
+
{"version":3,"file":"tuff.js","sourceRoot":"","sources":["../src/tuff.ts"],"names":[],"mappings":"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"}
|
package/dist/upsert.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upsert.d.ts","sourceRoot":"","sources":["../src/upsert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"upsert.d.ts","sourceRoot":"","sources":["../src/upsert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAsB3C,gGAAgG;AAChG,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYnF;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,aAAa,CAAC,EAAE,MAAM,EAAE,GACvB,IAAI,CAmBN"}
|
package/dist/upsert.js
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
// Module-level cache: schema is static after syncSchema runs at startup
|
|
2
|
+
const pkCache = new Map();
|
|
3
|
+
function getPrimaryKeys(db, table) {
|
|
4
|
+
let cached = pkCache.get(table);
|
|
5
|
+
if (cached)
|
|
6
|
+
return cached;
|
|
7
|
+
const columns = db.prepare(`PRAGMA table_info('${table}')`).all();
|
|
8
|
+
cached = new Set(columns.filter((c) => c.pk > 0).map((c) => c.name));
|
|
9
|
+
if (cached.size === 0) {
|
|
10
|
+
throw new Error(`No primary key found on table "${table}"`);
|
|
11
|
+
}
|
|
12
|
+
pkCache.set(table, cached);
|
|
13
|
+
return cached;
|
|
14
|
+
}
|
|
1
15
|
/** JSON.stringify arrays and plain objects; coerce booleans to 0/1; primitives pass through. */
|
|
2
16
|
export function autoStringify(row) {
|
|
3
17
|
const out = {};
|
|
@@ -20,11 +34,7 @@ export function autoStringify(row) {
|
|
|
20
34
|
*/
|
|
21
35
|
export function upsertRow(db, table, row, updateColumns) {
|
|
22
36
|
const stringified = autoStringify(row);
|
|
23
|
-
const
|
|
24
|
-
const pkNames = new Set(columns.filter((c) => c.pk > 0).map((c) => c.name));
|
|
25
|
-
if (pkNames.size === 0) {
|
|
26
|
-
throw new Error(`No primary key found on table "${table}"`);
|
|
27
|
-
}
|
|
37
|
+
const pkNames = getPrimaryKeys(db, table);
|
|
28
38
|
const colNames = Object.keys(stringified);
|
|
29
39
|
const values = Object.values(stringified);
|
|
30
40
|
const placeholders = colNames.map(() => '?').join(', ');
|
package/dist/upsert.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upsert.js","sourceRoot":"","sources":["../src/upsert.ts"],"names":[],"mappings":"AAOA,gGAAgG;AAChG,MAAM,UAAU,aAAa,CAAC,GAA4B;IACxD,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,IAAI,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAE,CAAC,WAAW,KAAK,MAAM,CAAC,EAAE,CAAC;YAClG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CACvB,EAAqB,EACrB,KAAa,EACb,GAA4B,EAC5B,aAAwB;IAExB,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"upsert.js","sourceRoot":"","sources":["../src/upsert.ts"],"names":[],"mappings":"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"}
|