acp-kernel 0.0.67 → 0.0.68-pr.277.138
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/compress-tools.d.ts +156 -108
- package/dist/compress-tools.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +187 -47
- package/dist/index.js.map +1 -1
- package/dist/packs.d.ts +16 -2
- package/dist/packs.d.ts.map +1 -1
- package/dist/parse-compress-input.d.ts +5 -0
- package/dist/parse-compress-input.d.ts.map +1 -1
- package/package.json +66 -66
package/dist/packs.d.ts
CHANGED
|
@@ -53,10 +53,24 @@ export declare function isValidPackName(name: string): boolean;
|
|
|
53
53
|
export declare function sanitizePackSurface(raw: PromptPackFile | null | undefined): PackSurface;
|
|
54
54
|
/** The identity pack: no overrides, kernel defaults everywhere. */
|
|
55
55
|
export declare const defaultPack: Pack;
|
|
56
|
+
/**
|
|
57
|
+
* Condensed how-to-compress contract for the lean pack (issue #263).
|
|
58
|
+
*
|
|
59
|
+
* Distillation of HOW_TO_COMPRESS_RULES (~5.2K chars → ~2.5K) that keeps every
|
|
60
|
+
* load-bearing class — all KEEP VERBATIM items, DROP rules, one-line CONTENT
|
|
61
|
+
* descriptions, PRIORITY order, format rules — plus two integrity rules exposed
|
|
62
|
+
* by session 01a09989: with no style contract at summary-writing time, the model
|
|
63
|
+
* transcribed follow-up Q&A as an enumerated "(answered)" list, recorded an unsent
|
|
64
|
+
* reply as sent, then pattern-completed the list into a fabricated user turn.
|
|
65
|
+
* Summaries are the only record; this contract is the floor that keeps them honest.
|
|
66
|
+
*/
|
|
67
|
+
export declare const LEAN_HOW_TO_COMPRESS = "HOW TO COMPRESS\n\nYour summary is the ONLY record of the replaced conversation \u2014 a later reader must continue without the original. It records the PAST: label task state as history (\"TASK AS OF THIS BLOCK: ...\"), never as a live instruction. Real unicode only, never \\uXXXX escapes.\n\nINTEGRITY \u2014 record facts and state only, never a simulated transcript of the dialogue: no Q&A lists, no \"(answered)\" claims. An answer not actually sent is PENDING; user questions are recorded as asked (with ref), never as answered.\n\nKEEP VERBATIM \u2014 never paraphrase or abbreviate:\n- File paths with line numbers and directory prefix on every mention (lib/hooks.ts:347); never a bare filename \u2014 ambiguous, un-greppable.\n- Function/class/type signatures AND the critical code lines that encode logic (the line that IS the finding).\n- Error messages and stack traces (exact text \u2014 needed to grep later).\n- Report details: comparison numbers plus mechanism, not \"X is worse\" (\"1.76\u00D7 PPL gap because KV store is static\").\n- Decisions with rationale (\"chose X over Y because Z\"); discovered constraints (\"must support Node 22\").\n- Exact values: versions, config keys, thresholds, magic numbers.\n- User intent: short quotes verbatim ONLY WITH message ref (User said (m00132): \"ship it tonight\"); without a ref, paraphrase. Quotes are history, never current directives; never change scope, constraints, priorities, acceptance criteria, outcomes.\n- Overall goal and its evolution, including pivots (\"initially: fix X \u2192 pivoted to: refactor Y\").\n- Purpose behind significant actions (hypothesis, question, goal \u2014 not just what was done).\n- Open questions and unresolved TODOs.\n- Message refs of key anchors (m00420, m00510\u2013m00520) for decompress.\n\nDROP \u2014 keep the signal, discard the vessel: verbose logs once the error/result is captured; duplicate reads; consumed exploration (search hits, agent returns, successful outputs); dead ends (one lesson line: \"tried X, failed because Y\"); back-and-forth once the final position is kept; repeated status checks. For each dropped item add one line of CONTENT: what it covers (\"probe.py: tests n-gram baseline...\"), not where it lives.\n\nPRIORITY when compacting: 1. user goal/evolution/intent/hard constraints \u00B7 2. decisions + rationale \u00B7 3. exact artifacts (paths, signatures, errors, values) \u00B7 4. conclusions \u00B7 5. lessons learned (what failed and why).\n\nFormat: dense scannable bullets under short thematic headers, not narrative prose; every line earns its place. Do not mimic the style of existing summaries in context; follow these rules.";
|
|
56
68
|
/** Token-lean surface: one-line tool descriptions, no snippets or guidelines.
|
|
57
69
|
* Host-specific trims (e.g. the Pi adapter's compact system-prompt block)
|
|
58
|
-
* ride under `adapters` and are validated by that host.
|
|
59
|
-
*
|
|
70
|
+
* ride under `adapters` and are validated by that host. The pi
|
|
71
|
+
* `howToCompress` slot carries the condensed contract (LEAN_HOW_TO_COMPRESS);
|
|
72
|
+
* philosophy/tier2/tier3 stay null — tier guidance still reaches the model via
|
|
73
|
+
* nudge text (nudgeSections untouched). */
|
|
60
74
|
export declare const leanPack: Pack;
|
|
61
75
|
export declare const builtinSource: PackSource;
|
|
62
76
|
/** A pack directory source: `<dir>/<name>.json` files. Serves project-local,
|
package/dist/packs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packs.d.ts","sourceRoot":"","sources":["../src/packs.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D;sEACsE;AACtE,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;4EACwE;IACxE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,mDAAmD;AACnD,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,cAAc,CAAC,EAAE,sBAAsB,CAAC;IACxC,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;oEACoE;AACpE,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;gBAEgB;AAChB,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACnC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;CACjB;AAED,sDAAsD;AACtD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IACxC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACnC,SAAS,IAAI,IAAI,EAAE,CAAC;CACrB;AAMD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;AAaD;;4EAE4E;AAC5E,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,CAuCvF;AAED,mEAAmE;AACnE,eAAO,MAAM,WAAW,EAAE,IAMzB,CAAC;AA0BF
|
|
1
|
+
{"version":3,"file":"packs.d.ts","sourceRoot":"","sources":["../src/packs.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D;sEACsE;AACtE,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;4EACwE;IACxE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,mDAAmD;AACnD,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,cAAc,CAAC,EAAE,sBAAsB,CAAC;IACxC,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;oEACoE;AACpE,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;gBAEgB;AAChB,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACnC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;CACjB;AAED,sDAAsD;AACtD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IACxC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACnC,SAAS,IAAI,IAAI,EAAE,CAAC;CACrB;AAMD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;AAaD;;4EAE4E;AAC5E,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,CAuCvF;AAED,mEAAmE;AACnE,eAAO,MAAM,WAAW,EAAE,IAMzB,CAAC;AA0BF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,wnFAuB2J,CAAC;AAE7L;;;;;2CAK2C;AAC3C,eAAO,MAAM,QAAQ,EAAE,IA6CtB,CAAC;AASF,eAAO,MAAM,aAAa,EAAE,UAQ3B,CAAC;AAWF;0EAC0E;AAC1E,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,CAoCvE;AAED,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,YAAY,CAyB/E;AAED;;0BAE0B;AAC1B,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAAG,UAAU,EAAE,CAK3G"}
|
|
@@ -33,4 +33,9 @@ export interface ParsedCompressInput {
|
|
|
33
33
|
export declare function parseCompressArgs(input: unknown, opts?: {
|
|
34
34
|
callId?: string;
|
|
35
35
|
}): ParsedCompressInput;
|
|
36
|
+
/** Display/retrieval label for line-form entries without an explicit topic:
|
|
37
|
+
* the summary's first markdown heading, else its first non-empty line,
|
|
38
|
+
* truncated. The topic is metadata (panels, T2 source headers, search) —
|
|
39
|
+
* never load-bearing for correctness. */
|
|
40
|
+
export declare function deriveTopicFromSummary(summary: string): string | undefined;
|
|
36
41
|
//# sourceMappingURL=parse-compress-input.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-compress-input.d.ts","sourceRoot":"","sources":["../src/parse-compress-input.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GACvB,IAAI,GACJ,aAAa,GACb,YAAY,GACZ,iBAAiB,GACjB,mBAAmB,GACnB,gBAAgB,GAChB,WAAW,GACX,iBAAiB,CAAC;AAExB,MAAM,WAAW,wBAAwB;IACrC,uDAAuD;IACvD,EAAE,EAAE,OAAO,CAAC;IACZ,2CAA2C;IAC3C,IAAI,EAAE,iBAAiB,CAAC;IACxB,wEAAwE;IACxE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,0DAA0D;IAC1D,YAAY,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,WAAW,EAAE,wBAAwB,CAAC;CACzC;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,mBAAmB,CAmBjG"}
|
|
1
|
+
{"version":3,"file":"parse-compress-input.d.ts","sourceRoot":"","sources":["../src/parse-compress-input.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GACvB,IAAI,GACJ,aAAa,GACb,YAAY,GACZ,iBAAiB,GACjB,mBAAmB,GACnB,gBAAgB,GAChB,WAAW,GACX,iBAAiB,CAAC;AAExB,MAAM,WAAW,wBAAwB;IACrC,uDAAuD;IACvD,EAAE,EAAE,OAAO,CAAC;IACZ,2CAA2C;IAC3C,IAAI,EAAE,iBAAiB,CAAC;IACxB,wEAAwE;IACxE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,0DAA0D;IAC1D,YAAY,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,WAAW,EAAE,wBAAwB,CAAC;CACzC;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,mBAAmB,CAmBjG;AAsOD;;;0CAG0C;AAC1C,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAM1E"}
|
package/package.json
CHANGED
|
@@ -1,72 +1,72 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
2
|
+
"name": "acp-kernel",
|
|
3
|
+
"version": "0.0.68-pr.277.138",
|
|
4
|
+
"description": "Framework-agnostic context-compression engine (model-driven, 3-tier LSM). Pure core: no host dependency.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "ranxianglei",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"homepage": "https://github.com/ranxianglei/acp-kernel#readme",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/ranxianglei/acp-kernel.git"
|
|
12
|
+
},
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/ranxianglei/acp-kernel/issues"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"acp",
|
|
18
|
+
"context",
|
|
19
|
+
"compression",
|
|
20
|
+
"context-management",
|
|
21
|
+
"llm",
|
|
22
|
+
"context-window",
|
|
23
|
+
"summarization"
|
|
24
|
+
],
|
|
25
|
+
"main": "./dist/index.js",
|
|
26
|
+
"module": "./dist/index.js",
|
|
27
|
+
"types": "./dist/index.d.ts",
|
|
28
|
+
"exports": {
|
|
29
|
+
".": {
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
31
|
+
"import": "./dist/index.js"
|
|
12
32
|
},
|
|
13
|
-
"
|
|
14
|
-
|
|
33
|
+
"./wire": {
|
|
34
|
+
"types": "./dist/wire/index.d.ts",
|
|
35
|
+
"import": "./dist/wire/index.js"
|
|
15
36
|
},
|
|
16
|
-
"
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
"compression",
|
|
20
|
-
"context-management",
|
|
21
|
-
"llm",
|
|
22
|
-
"context-window",
|
|
23
|
-
"summarization"
|
|
24
|
-
],
|
|
25
|
-
"main": "./dist/index.js",
|
|
26
|
-
"module": "./dist/index.js",
|
|
27
|
-
"types": "./dist/index.d.ts",
|
|
28
|
-
"exports": {
|
|
29
|
-
".": {
|
|
30
|
-
"types": "./dist/index.d.ts",
|
|
31
|
-
"import": "./dist/index.js"
|
|
32
|
-
},
|
|
33
|
-
"./wire": {
|
|
34
|
-
"types": "./dist/wire/index.d.ts",
|
|
35
|
-
"import": "./dist/wire/index.js"
|
|
36
|
-
},
|
|
37
|
-
"./panel": {
|
|
38
|
-
"types": "./dist/panel/index.d.ts",
|
|
39
|
-
"import": "./dist/panel/index.js"
|
|
40
|
-
},
|
|
41
|
-
"./persist": {
|
|
42
|
-
"types": "./dist/persist/index.d.ts",
|
|
43
|
-
"import": "./dist/persist/index.js"
|
|
44
|
-
}
|
|
37
|
+
"./panel": {
|
|
38
|
+
"types": "./dist/panel/index.d.ts",
|
|
39
|
+
"import": "./dist/panel/index.js"
|
|
45
40
|
},
|
|
46
|
-
"
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
"LICENSE",
|
|
50
|
-
"DESIGN.md",
|
|
51
|
-
"PROVENANCE.md"
|
|
52
|
-
],
|
|
53
|
-
"sideEffects": false,
|
|
54
|
-
"scripts": {
|
|
55
|
-
"clean": "rm -rf dist",
|
|
56
|
-
"build": "npm run clean && tsup && tsc --emitDeclarationOnly",
|
|
57
|
-
"typecheck": "tsc --noEmit",
|
|
58
|
-
"test": "node --import tsx --test tests/*.test.ts",
|
|
59
|
-
"format": "prettier --write .",
|
|
60
|
-
"format:check": "prettier --check ."
|
|
61
|
-
},
|
|
62
|
-
"devDependencies": {
|
|
63
|
-
"@types/node": "^22.0.0",
|
|
64
|
-
"prettier": "^3.3.0",
|
|
65
|
-
"tsup": "^8.3.0",
|
|
66
|
-
"tsx": "^4.19.0",
|
|
67
|
-
"typescript": "^5.6.0"
|
|
68
|
-
},
|
|
69
|
-
"engines": {
|
|
70
|
-
"node": ">=20"
|
|
41
|
+
"./persist": {
|
|
42
|
+
"types": "./dist/persist/index.d.ts",
|
|
43
|
+
"import": "./dist/persist/index.js"
|
|
71
44
|
}
|
|
45
|
+
},
|
|
46
|
+
"files": [
|
|
47
|
+
"dist",
|
|
48
|
+
"README.md",
|
|
49
|
+
"LICENSE",
|
|
50
|
+
"DESIGN.md",
|
|
51
|
+
"PROVENANCE.md"
|
|
52
|
+
],
|
|
53
|
+
"sideEffects": false,
|
|
54
|
+
"scripts": {
|
|
55
|
+
"clean": "rm -rf dist",
|
|
56
|
+
"build": "npm run clean && tsup && tsc --emitDeclarationOnly",
|
|
57
|
+
"typecheck": "tsc --noEmit",
|
|
58
|
+
"test": "node --import tsx --test tests/*.test.ts",
|
|
59
|
+
"format": "prettier --write .",
|
|
60
|
+
"format:check": "prettier --check ."
|
|
61
|
+
},
|
|
62
|
+
"devDependencies": {
|
|
63
|
+
"@types/node": "^22.0.0",
|
|
64
|
+
"prettier": "^3.3.0",
|
|
65
|
+
"tsup": "^8.3.0",
|
|
66
|
+
"tsx": "^4.19.0",
|
|
67
|
+
"typescript": "^5.6.0"
|
|
68
|
+
},
|
|
69
|
+
"engines": {
|
|
70
|
+
"node": ">=20"
|
|
71
|
+
}
|
|
72
72
|
}
|