pybao-cli 1.5.8 → 1.5.10
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/cli-acp.js +29 -5
- package/cli.js +28 -6
- package/dist/REPL-LEORZMM6.js +50 -0
- package/dist/{acp-53E7A6L4.js → acp-OPW4NHQM.js} +46 -35
- package/dist/acp-OPW4NHQM.js.map +7 -0
- package/dist/{agentsValidate-VSDRHIJQ.js → agentsValidate-ZVFEF4KY.js} +7 -7
- package/dist/{ask-XUXTH3EI.js → ask-SLRDSXCI.js} +55 -33
- package/dist/ask-SLRDSXCI.js.map +7 -0
- package/dist/{autoUpdater-GAWZB7YO.js → autoUpdater-BZ7E2E54.js} +3 -3
- package/dist/{chunk-4QTASHFO.js → chunk-25MWUHVP.js} +1 -1
- package/dist/{chunk-HOBCGAUT.js → chunk-2KTGONPT.js} +1 -1
- package/dist/{chunk-H67PQDUM.js → chunk-3YDOR2NA.js} +4 -4
- package/dist/{chunk-YABL4JYT.js → chunk-46JMZBCX.js} +1 -1
- package/dist/{chunk-JFIH5LIP.js → chunk-4LLCMT3D.js} +2 -2
- package/dist/{chunk-TJUTH3WH.js → chunk-4USBSNI7.js} +2241 -1530
- package/dist/chunk-4USBSNI7.js.map +7 -0
- package/dist/{chunk-VBJ6J63U.js → chunk-6UPWXBMK.js} +144 -76
- package/dist/chunk-6UPWXBMK.js.map +7 -0
- package/dist/{chunk-KRTFCQTN.js → chunk-72ICL3CH.js} +19 -6
- package/dist/{chunk-KRTFCQTN.js.map → chunk-72ICL3CH.js.map} +2 -2
- package/dist/{chunk-62CZOFWT.js → chunk-7FGPQ22V.js} +1 -1
- package/dist/{chunk-DRP66QHJ.js → chunk-7SZNDNLK.js} +1 -4
- package/dist/{chunk-LNPUQ3UL.js → chunk-AJEGTH5Q.js} +1 -1
- package/dist/{chunk-LNE2PRIU.js → chunk-AO6J7LEE.js} +3 -3
- package/dist/{chunk-4I2M26LO.js → chunk-E6OFGHIW.js} +3 -3
- package/dist/{chunk-543LWZDY.js → chunk-EEKXOPVZ.js} +3 -3
- package/dist/chunk-EWXKQF7L.js +922 -0
- package/dist/chunk-EWXKQF7L.js.map +7 -0
- package/dist/{chunk-FKDSZPS4.js → chunk-HPUNAUYE.js} +2 -7
- package/dist/chunk-HPUNAUYE.js.map +7 -0
- package/dist/{chunk-IWKEQNWI.js → chunk-MPEAANUT.js} +3 -3
- package/dist/{chunk-JZPXOQK3.js → chunk-MT3ZAKKO.js} +3 -3
- package/dist/{chunk-WQVP2232.js → chunk-NIW3GVZ6.js} +45 -61
- package/dist/chunk-NIW3GVZ6.js.map +7 -0
- package/dist/chunk-OC5CZWBQ.js.map +7 -0
- package/dist/{chunk-VW7ZPH5U.js → chunk-OHW6JWIB.js} +4 -4
- package/dist/{chunk-AQXOZUAV.js → chunk-P6O6FCAD.js} +2 -2
- package/dist/{chunk-Z35GPUWK.js → chunk-PUG4EOMG.js} +1 -1
- package/dist/{chunk-WBAZ4MMW.js → chunk-RSYAAJ5F.js} +4 -4
- package/dist/{chunk-46Z3GAE4.js → chunk-SJIE5KQR.js} +4 -4
- package/dist/{chunk-FQMMZCOL.js → chunk-TF4T573B.js} +2 -2
- package/dist/chunk-TQTC7KJZ.js +81 -0
- package/dist/{chunk-MHFWCK5F.js.map → chunk-TQTC7KJZ.js.map} +1 -1
- package/dist/{chunk-5PSLFGDF.js → chunk-UFR47H5I.js} +11 -7
- package/dist/chunk-UFR47H5I.js.map +7 -0
- package/dist/{chunk-IZ6NAVRD.js → chunk-UPULEKBE.js} +1 -1
- package/dist/{chunk-VRWY6YIJ.js → chunk-UV2N4M64.js} +3 -3
- package/dist/{chunk-RAOXUYK3.js → chunk-W6OFNZ3W.js} +2 -2
- package/dist/{chunk-RFY3YUHB.js → chunk-WKSMEOKH.js} +3 -3
- package/dist/chunk-YTESBILA.js +78 -0
- package/dist/chunk-YTESBILA.js.map +7 -0
- package/dist/{cli-3QFWTKDS.js → cli-OZWYRJHM.js} +127 -102
- package/dist/cli-OZWYRJHM.js.map +7 -0
- package/dist/commands-ASLDRXGO.js +54 -0
- package/dist/{config-DFRB2SLO.js → config-LCNYYLVP.js} +4 -4
- package/dist/{context-V62FBZVF.js → context-DPW4MYE4.js} +6 -6
- package/dist/conversationPersistence-JLI7ZCBG.js +13 -0
- package/dist/{conversationTracker-DZR2N3FQ.js → conversationTracker-KVYAMRCS.js} +4 -3
- package/dist/{customCommands-3ZIVHLTU.js → customCommands-O2J3V24X.js} +4 -4
- package/dist/{env-BMFEDWPX.js → env-VUPUO64W.js} +2 -2
- package/dist/{file-SD5NRUTD.js → file-VJBZTSIC.js} +4 -4
- package/dist/index.js +3 -3
- package/dist/{llm-466UDKVG.js → llm-BXWBQJQA.js} +416 -49
- package/dist/llm-BXWBQJQA.js.map +7 -0
- package/dist/{llmLazy-7R7P5A3P.js → llmLazy-XR66QEVP.js} +1 -1
- package/dist/{loader-X7RIUXJB.js → loader-IHQ33LHG.js} +4 -4
- package/dist/{lsp-2FPBS2M3.js → lsp-57NLFUAK.js} +6 -6
- package/dist/{lspAnchor-KQNSWWL3.js → lspAnchor-VWSO7YZY.js} +6 -6
- package/dist/{mcp-3SV4TZYL.js → mcp-XJJDR27I.js} +7 -7
- package/dist/{mentionProcessor-KJP4IYVF.js → mentionProcessor-6MSAZVVB.js} +5 -5
- package/dist/{messages-BXF7LJIV.js → messages-4KD4FLFL.js} +9 -5
- package/dist/{model-F6VCUHDL.js → model-AA5UZIM5.js} +5 -5
- package/dist/{openai-QTTJIB6O.js → openai-HAAQ3Y7C.js} +5 -5
- package/dist/{outputStyles-SJ57QG7S.js → outputStyles-MJS6OUKM.js} +4 -4
- package/dist/{pluginRuntime-4SDXCK4Q.js → pluginRuntime-O23ERPKS.js} +6 -6
- package/dist/{pluginValidation-YJ4W3MX4.js → pluginValidation-T25KVTG4.js} +6 -6
- package/dist/prompts-CU2RK7D3.js +56 -0
- package/dist/{pybAgentSessionLoad-IZULLNUL.js → pybAgentSessionLoad-M3JZ2DH3.js} +4 -4
- package/dist/{pybAgentSessionResume-QRNTC3A3.js → pybAgentSessionResume-D2R55SPH.js} +4 -4
- package/dist/{pybAgentStreamJsonSession-RUHPYCTJ.js → pybAgentStreamJsonSession-LKZILYAG.js} +4 -3
- package/dist/pybAgentStreamJsonSession-LKZILYAG.js.map +7 -0
- package/dist/{pybHooks-GX3AIY4U.js → pybHooks-GAJ5GRHI.js} +4 -4
- package/dist/query-2X4R5ZCX.js +58 -0
- package/dist/{registry-JNPRNIFB.js → registry-GDKX2X34.js} +5 -5
- package/dist/{ripgrep-ZKWM7RMS.js → ripgrep-FJH77I5J.js} +3 -3
- package/dist/{skillMarketplace-4LJAYRMX.js → skillMarketplace-6NXN5AYJ.js} +3 -3
- package/dist/{state-I6BQR2T5.js → state-5JZ6HLQY.js} +2 -2
- package/dist/{theme-GL7HKKCQ.js → theme-HJNALYGQ.js} +5 -5
- package/dist/{toolPermissionSettings-ZRTSQVQ2.js → toolPermissionSettings-KPM5KUAD.js} +6 -6
- package/dist/tools-C65SWXV6.js +55 -0
- package/dist/tools-C65SWXV6.js.map +7 -0
- package/dist/{userInput-M6JYKQCU.js → userInput-BXJEMFWI.js} +76 -49
- package/dist/userInput-BXJEMFWI.js.map +7 -0
- package/package.json +11 -7
- package/scripts/cli-acp-wrapper.cjs +29 -5
- package/scripts/cli-wrapper.cjs +28 -6
- package/scripts/postinstall.js +3 -1
- package/scripts/typed-sql-install-smoke.mjs +69 -0
- package/scripts/typed-sql-no-fallback-gate.mjs +61 -0
- package/scripts/typed-sql-release-gate.mjs +51 -0
- package/dist/REPL-AHBTBEED.js +0 -49
- package/dist/acp-53E7A6L4.js.map +0 -7
- package/dist/ask-XUXTH3EI.js.map +0 -7
- package/dist/chunk-5PSLFGDF.js.map +0 -7
- package/dist/chunk-B62BK4YK.js +0 -516
- package/dist/chunk-B62BK4YK.js.map +0 -7
- package/dist/chunk-FKDSZPS4.js.map +0 -7
- package/dist/chunk-MHFWCK5F.js +0 -240
- package/dist/chunk-O6DTZU7F.js.map +0 -7
- package/dist/chunk-TJUTH3WH.js.map +0 -7
- package/dist/chunk-VBJ6J63U.js.map +0 -7
- package/dist/chunk-WQVP2232.js.map +0 -7
- package/dist/cli-3QFWTKDS.js.map +0 -7
- package/dist/commands-ITOHDPPP.js +0 -53
- package/dist/llm-466UDKVG.js.map +0 -7
- package/dist/prompts-5RPQRZ3L.js +0 -55
- package/dist/pybAgentStreamJsonSession-RUHPYCTJ.js.map +0 -7
- package/dist/query-YLKPJVHB.js +0 -57
- package/dist/tools-4GEB2BRR.js +0 -54
- package/dist/userInput-M6JYKQCU.js.map +0 -7
- package/resources/output-styles/legacy-system-maintainer.md +0 -47
- /package/dist/{REPL-AHBTBEED.js.map → REPL-LEORZMM6.js.map} +0 -0
- /package/dist/{agentsValidate-VSDRHIJQ.js.map → agentsValidate-ZVFEF4KY.js.map} +0 -0
- /package/dist/{autoUpdater-GAWZB7YO.js.map → autoUpdater-BZ7E2E54.js.map} +0 -0
- /package/dist/{chunk-4QTASHFO.js.map → chunk-25MWUHVP.js.map} +0 -0
- /package/dist/{chunk-HOBCGAUT.js.map → chunk-2KTGONPT.js.map} +0 -0
- /package/dist/{chunk-H67PQDUM.js.map → chunk-3YDOR2NA.js.map} +0 -0
- /package/dist/{chunk-YABL4JYT.js.map → chunk-46JMZBCX.js.map} +0 -0
- /package/dist/{chunk-JFIH5LIP.js.map → chunk-4LLCMT3D.js.map} +0 -0
- /package/dist/{chunk-62CZOFWT.js.map → chunk-7FGPQ22V.js.map} +0 -0
- /package/dist/{chunk-DRP66QHJ.js.map → chunk-7SZNDNLK.js.map} +0 -0
- /package/dist/{chunk-LNPUQ3UL.js.map → chunk-AJEGTH5Q.js.map} +0 -0
- /package/dist/{chunk-LNE2PRIU.js.map → chunk-AO6J7LEE.js.map} +0 -0
- /package/dist/{chunk-4I2M26LO.js.map → chunk-E6OFGHIW.js.map} +0 -0
- /package/dist/{chunk-543LWZDY.js.map → chunk-EEKXOPVZ.js.map} +0 -0
- /package/dist/{chunk-IWKEQNWI.js.map → chunk-MPEAANUT.js.map} +0 -0
- /package/dist/{chunk-JZPXOQK3.js.map → chunk-MT3ZAKKO.js.map} +0 -0
- /package/dist/{chunk-O6DTZU7F.js → chunk-OC5CZWBQ.js} +0 -0
- /package/dist/{chunk-VW7ZPH5U.js.map → chunk-OHW6JWIB.js.map} +0 -0
- /package/dist/{chunk-AQXOZUAV.js.map → chunk-P6O6FCAD.js.map} +0 -0
- /package/dist/{chunk-Z35GPUWK.js.map → chunk-PUG4EOMG.js.map} +0 -0
- /package/dist/{chunk-WBAZ4MMW.js.map → chunk-RSYAAJ5F.js.map} +0 -0
- /package/dist/{chunk-46Z3GAE4.js.map → chunk-SJIE5KQR.js.map} +0 -0
- /package/dist/{chunk-FQMMZCOL.js.map → chunk-TF4T573B.js.map} +0 -0
- /package/dist/{chunk-IZ6NAVRD.js.map → chunk-UPULEKBE.js.map} +0 -0
- /package/dist/{chunk-VRWY6YIJ.js.map → chunk-UV2N4M64.js.map} +0 -0
- /package/dist/{chunk-RAOXUYK3.js.map → chunk-W6OFNZ3W.js.map} +0 -0
- /package/dist/{chunk-RFY3YUHB.js.map → chunk-WKSMEOKH.js.map} +0 -0
- /package/dist/{commands-ITOHDPPP.js.map → commands-ASLDRXGO.js.map} +0 -0
- /package/dist/{config-DFRB2SLO.js.map → config-LCNYYLVP.js.map} +0 -0
- /package/dist/{context-V62FBZVF.js.map → context-DPW4MYE4.js.map} +0 -0
- /package/dist/{conversationTracker-DZR2N3FQ.js.map → conversationPersistence-JLI7ZCBG.js.map} +0 -0
- /package/dist/{customCommands-3ZIVHLTU.js.map → conversationTracker-KVYAMRCS.js.map} +0 -0
- /package/dist/{env-BMFEDWPX.js.map → customCommands-O2J3V24X.js.map} +0 -0
- /package/dist/{file-SD5NRUTD.js.map → env-VUPUO64W.js.map} +0 -0
- /package/dist/{llmLazy-7R7P5A3P.js.map → file-VJBZTSIC.js.map} +0 -0
- /package/dist/{loader-X7RIUXJB.js.map → llmLazy-XR66QEVP.js.map} +0 -0
- /package/dist/{lsp-2FPBS2M3.js.map → loader-IHQ33LHG.js.map} +0 -0
- /package/dist/{mcp-3SV4TZYL.js.map → lsp-57NLFUAK.js.map} +0 -0
- /package/dist/{lspAnchor-KQNSWWL3.js.map → lspAnchor-VWSO7YZY.js.map} +0 -0
- /package/dist/{messages-BXF7LJIV.js.map → mcp-XJJDR27I.js.map} +0 -0
- /package/dist/{mentionProcessor-KJP4IYVF.js.map → mentionProcessor-6MSAZVVB.js.map} +0 -0
- /package/dist/{model-F6VCUHDL.js.map → messages-4KD4FLFL.js.map} +0 -0
- /package/dist/{openai-QTTJIB6O.js.map → model-AA5UZIM5.js.map} +0 -0
- /package/dist/{outputStyles-SJ57QG7S.js.map → openai-HAAQ3Y7C.js.map} +0 -0
- /package/dist/{pluginValidation-YJ4W3MX4.js.map → outputStyles-MJS6OUKM.js.map} +0 -0
- /package/dist/{pluginRuntime-4SDXCK4Q.js.map → pluginRuntime-O23ERPKS.js.map} +0 -0
- /package/dist/{prompts-5RPQRZ3L.js.map → pluginValidation-T25KVTG4.js.map} +0 -0
- /package/dist/{pybAgentSessionLoad-IZULLNUL.js.map → prompts-CU2RK7D3.js.map} +0 -0
- /package/dist/{pybAgentSessionResume-QRNTC3A3.js.map → pybAgentSessionLoad-M3JZ2DH3.js.map} +0 -0
- /package/dist/{pybHooks-GX3AIY4U.js.map → pybAgentSessionResume-D2R55SPH.js.map} +0 -0
- /package/dist/{query-YLKPJVHB.js.map → pybHooks-GAJ5GRHI.js.map} +0 -0
- /package/dist/{registry-JNPRNIFB.js.map → query-2X4R5ZCX.js.map} +0 -0
- /package/dist/{ripgrep-ZKWM7RMS.js.map → registry-GDKX2X34.js.map} +0 -0
- /package/dist/{skillMarketplace-4LJAYRMX.js.map → ripgrep-FJH77I5J.js.map} +0 -0
- /package/dist/{state-I6BQR2T5.js.map → skillMarketplace-6NXN5AYJ.js.map} +0 -0
- /package/dist/{theme-GL7HKKCQ.js.map → state-5JZ6HLQY.js.map} +0 -0
- /package/dist/{toolPermissionSettings-ZRTSQVQ2.js.map → theme-HJNALYGQ.js.map} +0 -0
- /package/dist/{tools-4GEB2BRR.js.map → toolPermissionSettings-KPM5KUAD.js.map} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/core/tools/tool.ts"],
|
|
4
|
+
"sourcesContent": ["import { z } from 'zod'\nimport type * as React from 'react'\nimport type { PermissionMode } from '@pyb-types/permissionMode'\nimport type { ToolPermissionContext } from '@pyb-types/toolPermissionContext'\n\nexport type SetToolJSXFn = (\n jsx: {\n jsx: React.ReactNode | null\n shouldHidePromptInput: boolean\n } | null,\n) => void\n\nexport interface ToolUseContext {\n messageId: string | undefined\n toolUseId?: string\n agentId?: string\n agentType?: string\n safeMode?: boolean\n abortController: AbortController\n readFileTimestamps: { [filePath: string]: number }\n options?: {\n commands?: any[]\n tools?: any[]\n verbose?: boolean\n slowAndCapableModel?: string\n safeMode?: boolean\n permissionMode?: PermissionMode\n toolPermissionContext?: ToolPermissionContext\n lastUserPrompt?: string\n forkNumber?: number\n messageLogName?: string\n maxThinkingTokens?: any\n model?: string\n commandAllowedTools?: string[]\n isPybRequest?: boolean\n pybContext?: string\n isCustomCommand?: boolean\n contentInputPath?: 'blocks' | 'string_adapted'\n mcpClients?: any[]\n disableSlashCommands?: boolean\n persistSession?: boolean\n shouldAvoidPermissionPrompts?: boolean\n }\n responseState?: {\n previousResponseId?: string\n conversationId?: string\n }\n}\n\nexport interface ExtendedToolUseContext extends ToolUseContext {\n setToolJSX: SetToolJSXFn\n}\n\nexport interface ValidationResult {\n result: boolean\n message?: string\n errorCode?: number\n meta?: any\n}\n\nexport interface Tool<\n TInput extends z.ZodTypeAny = z.ZodTypeAny,\n TOutput = any,\n> {\n name: string\n description?: string | ((input?: z.infer<TInput>) => Promise<string>)\n inputSchema: TInput\n inputJSONSchema?: Record<string, unknown>\n prompt: (options?: { safeMode?: boolean }) => Promise<string>\n userFacingName?: (input?: z.infer<TInput>) => string\n cachedDescription?: string\n isEnabled: () => Promise<boolean>\n isReadOnly: (input?: z.infer<TInput>) => boolean\n isConcurrencySafe: (input?: z.infer<TInput>) => boolean\n needsPermissions: (input?: z.infer<TInput>) => boolean\n requiresUserInteraction?: (input?: z.infer<TInput>) => boolean\n validateInput?: (\n input: z.infer<TInput>,\n context?: ToolUseContext,\n ) => Promise<ValidationResult>\n renderResultForAssistant: (output: TOutput) => string | any[]\n renderToolUseMessage: (\n input: z.infer<TInput>,\n options: { verbose: boolean },\n ) => string | React.ReactElement | null\n renderToolUseRejectedMessage?: (...args: any[]) => React.ReactElement\n renderToolResultMessage?: (\n output: TOutput,\n options: { verbose: boolean },\n ) => React.ReactNode\n call: (\n input: z.infer<TInput>,\n context: ToolUseContext,\n ) => AsyncGenerator<\n | {\n type: 'result'\n data: TOutput\n resultForAssistant?: string | any[]\n newMessages?: unknown[]\n contextModifier?: {\n modifyContext: (ctx: ToolUseContext) => ToolUseContext\n }\n }\n | {\n type: 'progress'\n content: any\n normalizedMessages?: any[]\n tools?: any[]\n },\n void,\n unknown\n >\n}\n\nexport function getToolDescription(tool: Tool): string {\n if (tool.cachedDescription) {\n return tool.cachedDescription\n }\n\n if (typeof tool.description === 'string') {\n return tool.description\n }\n\n return `Tool: ${tool.name}`\n}\n"],
|
|
5
|
+
"mappings": ";;;;AAkHO,SAAS,mBAAmB,MAAoB;AACrD,MAAI,KAAK,mBAAmB;AAC1B,WAAO,KAAK;AAAA,EACd;AAEA,MAAI,OAAO,KAAK,gBAAgB,UAAU;AACxC,WAAO,KAAK;AAAA,EACd;AAEA,SAAO,SAAS,KAAK,IAAI;AAC3B;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -3,7 +3,7 @@ const require = __pybCreateRequire(import.meta.url);
|
|
|
3
3
|
|
|
4
4
|
// src/services/ai/llmLazy.ts
|
|
5
5
|
async function queryLLM(messages, systemPrompt, maxThinkingTokens, tools, signal, options) {
|
|
6
|
-
const { queryLLM: inner } = await import("./llm-
|
|
6
|
+
const { queryLLM: inner } = await import("./llm-BXWBQJQA.js");
|
|
7
7
|
return inner(
|
|
8
8
|
messages,
|
|
9
9
|
systemPrompt,
|
|
@@ -14,15 +14,15 @@ async function queryLLM(messages, systemPrompt, maxThinkingTokens, tools, signal
|
|
|
14
14
|
);
|
|
15
15
|
}
|
|
16
16
|
async function queryQuick(args) {
|
|
17
|
-
const { queryQuick: inner } = await import("./llm-
|
|
17
|
+
const { queryQuick: inner } = await import("./llm-BXWBQJQA.js");
|
|
18
18
|
return inner(args);
|
|
19
19
|
}
|
|
20
20
|
async function verifyApiKey(apiKey, baseURL, provider) {
|
|
21
|
-
const { verifyApiKey: inner } = await import("./llm-
|
|
21
|
+
const { verifyApiKey: inner } = await import("./llm-BXWBQJQA.js");
|
|
22
22
|
return inner(apiKey, baseURL, provider);
|
|
23
23
|
}
|
|
24
24
|
async function fetchAnthropicModels(apiKey, baseURL) {
|
|
25
|
-
const { fetchAnthropicModels: inner } = await import("./llm-
|
|
25
|
+
const { fetchAnthropicModels: inner } = await import("./llm-BXWBQJQA.js");
|
|
26
26
|
return inner(apiKey, baseURL);
|
|
27
27
|
}
|
|
28
28
|
|
|
@@ -6,12 +6,12 @@ import {
|
|
|
6
6
|
} from "./chunk-XKYHFZEC.js";
|
|
7
7
|
import {
|
|
8
8
|
getGlobalConfig
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-AO6J7LEE.js";
|
|
10
10
|
import {
|
|
11
11
|
debug,
|
|
12
12
|
getCurrentRequest,
|
|
13
13
|
logAPIError
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-2KTGONPT.js";
|
|
15
15
|
|
|
16
16
|
// src/services/ai/openai.ts
|
|
17
17
|
import { ProxyAgent, fetch } from "undici";
|
|
@@ -3,13 +3,13 @@ const require = __pybCreateRequire(import.meta.url);
|
|
|
3
3
|
import {
|
|
4
4
|
getSettingsFileCandidates,
|
|
5
5
|
loadSettingsWithLegacyFallback
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-7FGPQ22V.js";
|
|
7
7
|
import {
|
|
8
8
|
getSessionPlugins
|
|
9
9
|
} from "./chunk-BJSWTHRM.js";
|
|
10
10
|
import {
|
|
11
11
|
getTheme
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-46JMZBCX.js";
|
|
13
13
|
import {
|
|
14
14
|
addMcprcServerForTesting,
|
|
15
15
|
getCurrentProjectConfig,
|
|
@@ -19,13 +19,13 @@ import {
|
|
|
19
19
|
safeParseJSON,
|
|
20
20
|
saveCurrentProjectConfig,
|
|
21
21
|
saveGlobalConfig
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-AO6J7LEE.js";
|
|
23
23
|
import {
|
|
24
24
|
PRODUCT_COMMAND,
|
|
25
25
|
PRODUCT_NAME,
|
|
26
26
|
getCwd,
|
|
27
27
|
logMCPError
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-7SZNDNLK.js";
|
|
29
29
|
|
|
30
30
|
// src/services/mcp/client.ts
|
|
31
31
|
import { existsSync as existsSync2, readFileSync as readFileSync2 } from "fs";
|
|
@@ -2,13 +2,13 @@ import { createRequire as __pybCreateRequire } from "node:module";
|
|
|
2
2
|
const require = __pybCreateRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
ripGrepWithStatus
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-PUG4EOMG.js";
|
|
6
6
|
import {
|
|
7
7
|
getCurrentProjectConfig,
|
|
8
8
|
getGlobalConfig,
|
|
9
9
|
getOrCreateUserID,
|
|
10
10
|
saveCurrentProjectConfig
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-AO6J7LEE.js";
|
|
12
12
|
import {
|
|
13
13
|
SESSION_ID,
|
|
14
14
|
env,
|
|
@@ -16,10 +16,10 @@ import {
|
|
|
16
16
|
getCwd,
|
|
17
17
|
isContextScanDisabled,
|
|
18
18
|
logError
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-7SZNDNLK.js";
|
|
20
20
|
import {
|
|
21
21
|
MACRO
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-UFR47H5I.js";
|
|
23
23
|
import {
|
|
24
24
|
__require
|
|
25
25
|
} from "./chunk-I3J4JYES.js";
|
|
@@ -2,10 +2,10 @@ import { createRequire as __pybCreateRequire } from "node:module";
|
|
|
2
2
|
const require = __pybCreateRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
debug
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-2KTGONPT.js";
|
|
6
6
|
import {
|
|
7
7
|
logError
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-7SZNDNLK.js";
|
|
9
9
|
|
|
10
10
|
// src/services/system/systemReminder.ts
|
|
11
11
|
var SystemReminderService = class {
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { createRequire as __pybCreateRequire } from "node:module";
|
|
2
|
+
const require = __pybCreateRequire(import.meta.url);
|
|
3
|
+
import {
|
|
4
|
+
getPybAgentSessionId
|
|
5
|
+
} from "./chunk-B6IMQJZM.js";
|
|
6
|
+
import {
|
|
7
|
+
getCwd,
|
|
8
|
+
resolveXdgDataPath
|
|
9
|
+
} from "./chunk-7SZNDNLK.js";
|
|
10
|
+
|
|
11
|
+
// src/utils/protocol/pybAgentSessionLog.ts
|
|
12
|
+
import {
|
|
13
|
+
appendFileSync,
|
|
14
|
+
existsSync,
|
|
15
|
+
mkdirSync,
|
|
16
|
+
readFileSync,
|
|
17
|
+
statSync,
|
|
18
|
+
writeFileSync
|
|
19
|
+
} from "fs";
|
|
20
|
+
import { dirname, join } from "path";
|
|
21
|
+
function getSessionStoreBaseDir() {
|
|
22
|
+
return resolveXdgDataPath("sessions");
|
|
23
|
+
}
|
|
24
|
+
function sanitizeProjectNameForSessionStore(cwd) {
|
|
25
|
+
return cwd.replace(/[^a-zA-Z0-9]/g, "-");
|
|
26
|
+
}
|
|
27
|
+
function getSessionProjectsDir() {
|
|
28
|
+
return join(getSessionStoreBaseDir(), "projects");
|
|
29
|
+
}
|
|
30
|
+
function getSessionProjectDir(cwd) {
|
|
31
|
+
return join(getSessionProjectsDir(), sanitizeProjectNameForSessionStore(cwd));
|
|
32
|
+
}
|
|
33
|
+
function getSessionLogFilePath(args) {
|
|
34
|
+
return join(getSessionProjectDir(args.cwd), `${args.sessionId}.jsonl`);
|
|
35
|
+
}
|
|
36
|
+
function safeMkdir(dir) {
|
|
37
|
+
if (existsSync(dir)) return;
|
|
38
|
+
mkdirSync(dir, { recursive: true });
|
|
39
|
+
}
|
|
40
|
+
function safeEnsureFile(path) {
|
|
41
|
+
safeMkdir(dirname(path));
|
|
42
|
+
if (!existsSync(path)) writeFileSync(path, "", "utf8");
|
|
43
|
+
}
|
|
44
|
+
function safeAppendJsonl(path, record) {
|
|
45
|
+
try {
|
|
46
|
+
safeEnsureFile(path);
|
|
47
|
+
appendFileSync(path, JSON.stringify(record) + "\n", "utf8");
|
|
48
|
+
} catch {
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
var currentSessionCustomTitle = null;
|
|
52
|
+
var currentSessionTag = null;
|
|
53
|
+
function appendSessionCustomTitleRecord(args) {
|
|
54
|
+
const cwd = getCwd();
|
|
55
|
+
safeAppendJsonl(getSessionLogFilePath({ cwd, sessionId: args.sessionId }), {
|
|
56
|
+
type: "custom-title",
|
|
57
|
+
sessionId: args.sessionId,
|
|
58
|
+
customTitle: args.customTitle
|
|
59
|
+
});
|
|
60
|
+
if (args.sessionId === getPybAgentSessionId()) {
|
|
61
|
+
currentSessionCustomTitle = args.customTitle;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function appendSessionTagRecord(args) {
|
|
65
|
+
const cwd = getCwd();
|
|
66
|
+
safeAppendJsonl(getSessionLogFilePath({ cwd, sessionId: args.sessionId }), {
|
|
67
|
+
type: "tag",
|
|
68
|
+
sessionId: args.sessionId,
|
|
69
|
+
tag: args.tag
|
|
70
|
+
});
|
|
71
|
+
if (args.sessionId === getPybAgentSessionId()) {
|
|
72
|
+
currentSessionTag = args.tag;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export {
|
|
77
|
+
getSessionProjectsDir,
|
|
78
|
+
getSessionProjectDir,
|
|
79
|
+
appendSessionCustomTitleRecord,
|
|
80
|
+
appendSessionTagRecord
|
|
81
|
+
};
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/utils/protocol/pybAgentSessionLog.ts"],
|
|
4
4
|
"sourcesContent": ["import { execFileSync } from 'child_process'\nimport {\n appendFileSync,\n existsSync,\n mkdirSync,\n readFileSync,\n statSync,\n writeFileSync,\n} from 'fs'\nimport { randomBytes } from 'crypto'\nimport { dirname, join } from 'path'\nimport type { Message } from '@query'\nimport { MACRO } from '@constants/macros'\nimport { getCwd } from '@utils/state'\nimport { getPybAgentSessionId } from './pybAgentSessionId'\nimport { resolveXdgDataPath } from '@utils/config/env'\nimport {\n PLAN_SLUG_ADJECTIVES,\n PLAN_SLUG_NOUNS,\n PLAN_SLUG_VERBS,\n} from '@utils/plan/planSlugWords'\n\ntype PersistTarget =\n | { kind: 'session'; sessionId: string }\n | { kind: 'agent'; agentId: string }\n\ntype JsonlEnvelopeBase = {\n cwd: string\n sessionId: string\n version: string\n gitBranch?: string\n userType: string\n isSidechain: boolean\n parentUuid: string | null\n logicalParentUuid?: string\n agentId: string\n slug: string\n uuid: string\n timestamp: string\n}\n\ntype SessionJsonlEntry =\n | (JsonlEnvelopeBase & {\n type: 'user'\n message: any\n toolUseResult?: any\n })\n | (JsonlEnvelopeBase & {\n type: 'assistant'\n message: any\n requestId?: string\n isApiErrorMessage?: boolean\n })\n | { type: 'summary'; summary: string; leafUuid: string }\n | { type: 'custom-title'; sessionId: string; customTitle: string }\n | { type: 'tag'; sessionId: string; tag: string }\n | {\n type: 'file-history-snapshot'\n messageId: string\n snapshot: {\n messageId: string\n trackedFileBackups: Record<string, unknown>\n timestamp: string\n }\n isSnapshotUpdate: boolean\n }\n\nfunction getSessionStoreBaseDir(): string {\n return resolveXdgDataPath('sessions')\n}\n\nexport function sanitizeProjectNameForSessionStore(cwd: string): string {\n return cwd.replace(/[^a-zA-Z0-9]/g, '-')\n}\n\nexport function getSessionProjectsDir(): string {\n return join(getSessionStoreBaseDir(), 'projects')\n}\n\nexport function getSessionProjectDir(cwd: string): string {\n return join(getSessionProjectsDir(), sanitizeProjectNameForSessionStore(cwd))\n}\n\nexport function getSessionLogFilePath(args: {\n cwd: string\n sessionId: string\n}): string {\n return join(getSessionProjectDir(args.cwd), `${args.sessionId}.jsonl`)\n}\n\nexport function getAgentLogFilePath(args: {\n cwd: string\n agentId: string\n}): string {\n return join(getSessionProjectDir(args.cwd), `agent-${args.agentId}.jsonl`)\n}\n\nfunction safeMkdir(dir: string): void {\n if (existsSync(dir)) return\n mkdirSync(dir, { recursive: true })\n}\n\nfunction safeEnsureFile(path: string): void {\n safeMkdir(dirname(path))\n if (!existsSync(path)) writeFileSync(path, '', 'utf8')\n}\n\nfunction safeAppendJsonl(path: string, record: unknown): void {\n try {\n safeEnsureFile(path)\n appendFileSync(path, JSON.stringify(record) + '\\n', 'utf8')\n } catch {\n }\n}\n\nconst lastUuidByFile = new Map<string, string | null>()\nconst snapshotWrittenByFile = new Set<string>()\nconst slugBySessionId = new Map<string, string>()\nlet currentSessionCustomTitle: string | null = null\nlet currentSessionTag: string | null = null\n\ntype LastPersistedInfo = { uuid: string | null; slug: string | null }\n\nfunction safeReadLastPersistedInfo(filePath: string): LastPersistedInfo {\n try {\n if (!existsSync(filePath)) return { uuid: null, slug: null }\n const content = readFileSync(filePath, 'utf8')\n const lines = content.split('\\n')\n\n let lastSlug: string | null = null\n for (let i = lines.length - 1; i >= 0; i--) {\n const line = lines[i]?.trim()\n if (!line) continue\n let parsed: any\n try {\n parsed = JSON.parse(line)\n } catch {\n continue\n }\n if (!parsed || typeof parsed !== 'object') continue\n\n if (!lastSlug && typeof parsed.slug === 'string' && parsed.slug.trim()) {\n lastSlug = parsed.slug.trim()\n }\n\n if (typeof parsed.uuid === 'string' && parsed.uuid) {\n return { uuid: parsed.uuid, slug: lastSlug }\n }\n }\n\n return { uuid: null, slug: lastSlug }\n } catch {\n return { uuid: null, slug: null }\n }\n}\n\nfunction pickIndex(length: number): number {\n return randomBytes(4).readUInt32BE(0) % length\n}\n\nfunction pickWord(words: readonly string[]): string {\n return words[pickIndex(words.length)]!\n}\n\nfunction generateSessionSlug(): string {\n const adjective = pickWord(PLAN_SLUG_ADJECTIVES)\n const verb = pickWord(PLAN_SLUG_VERBS)\n const noun = pickWord(PLAN_SLUG_NOUNS)\n return `${adjective}-${verb}-${noun}`\n}\n\nfunction getOrCreateSessionSlug(sessionId: string): string {\n const existing = slugBySessionId.get(sessionId)\n if (existing) return existing\n const slug = generateSessionSlug()\n slugBySessionId.set(sessionId, slug)\n return slug\n}\n\ntype GitBranchCacheEntry = { cwd: string; value: string | undefined }\nlet gitBranchCache: GitBranchCacheEntry | null = null\n\nfunction getGitBranchBestEffort(cwd: string): string | undefined {\n if (gitBranchCache && gitBranchCache.cwd === cwd) return gitBranchCache.value\n\n let value: string | undefined\n try {\n const stdout = execFileSync('git', ['rev-parse', '--abbrev-ref', 'HEAD'], {\n cwd,\n stdio: ['ignore', 'pipe', 'ignore'],\n timeout: 750,\n })\n const branch = stdout.toString('utf8').trim()\n value = branch || undefined\n } catch {\n value = undefined\n }\n\n gitBranchCache = { cwd, value }\n return value\n}\n\nfunction ensureFileHistorySnapshot(\n filePath: string,\n firstMessageUuid: string,\n): void {\n if (snapshotWrittenByFile.has(filePath)) return\n\n try {\n safeEnsureFile(filePath)\n const size = statSync(filePath).size\n if (size > 0) {\n snapshotWrittenByFile.add(filePath)\n return\n }\n } catch {\n }\n\n const now = new Date().toISOString()\n safeAppendJsonl(filePath, {\n type: 'file-history-snapshot',\n messageId: firstMessageUuid,\n snapshot: {\n messageId: firstMessageUuid,\n trackedFileBackups: {},\n timestamp: now,\n },\n isSnapshotUpdate: false,\n } satisfies SessionJsonlEntry)\n\n snapshotWrittenByFile.add(filePath)\n}\n\nfunction resolvePersistTarget(toolUseContext: {\n agentId?: string\n}): PersistTarget {\n const agentId = toolUseContext.agentId\n if (agentId && agentId !== 'main') return { kind: 'agent', agentId }\n return { kind: 'session', sessionId: getPybAgentSessionId() }\n}\n\nexport function appendSessionJsonlFromMessage(args: {\n message: Message\n toolUseContext: { agentId?: string }\n}): void {\n const { message, toolUseContext } = args\n if (message.type !== 'user' && message.type !== 'assistant') return\n\n const cwd = getCwd()\n const userType = (process.env.USER_TYPE ?? 'external').trim() || 'external'\n const sessionId = getPybAgentSessionId()\n const agentId = (toolUseContext.agentId ?? 'main').trim() || 'main'\n const isSidechain = agentId !== 'main'\n const gitBranch = getGitBranchBestEffort(cwd)\n\n const target = resolvePersistTarget(toolUseContext)\n const filePath =\n target.kind === 'agent'\n ? getAgentLogFilePath({ cwd, agentId: target.agentId })\n : getSessionLogFilePath({ cwd, sessionId: target.sessionId })\n\n if (!lastUuidByFile.has(filePath)) {\n const info = safeReadLastPersistedInfo(filePath)\n lastUuidByFile.set(filePath, info.uuid)\n if (info.slug) slugBySessionId.set(sessionId, info.slug)\n }\n const previousUuid = lastUuidByFile.get(filePath) ?? null\n\n const slug = getOrCreateSessionSlug(sessionId)\n\n if (target.kind === 'session') {\n ensureFileHistorySnapshot(filePath, message.uuid)\n }\n\n const base: JsonlEnvelopeBase = {\n parentUuid: previousUuid,\n logicalParentUuid: undefined,\n isSidechain,\n userType,\n cwd,\n sessionId,\n version: MACRO.VERSION,\n ...(gitBranch ? { gitBranch } : {}),\n agentId,\n slug,\n uuid: message.uuid,\n timestamp: new Date().toISOString(),\n }\n\n const record: SessionJsonlEntry =\n message.type === 'user'\n ? {\n ...base,\n type: 'user',\n message: message.message,\n ...(message.toolUseResult?.data !== undefined\n ? { toolUseResult: message.toolUseResult.data }\n : {}),\n }\n : {\n ...base,\n type: 'assistant',\n message: message.message,\n ...(typeof (message as any).requestId === 'string'\n ? { requestId: String((message as any).requestId) }\n : {}),\n ...(message.isApiErrorMessage ? { isApiErrorMessage: true } : {}),\n }\n\n safeAppendJsonl(filePath, record)\n lastUuidByFile.set(filePath, message.uuid)\n}\n\nexport function appendSessionSummaryRecord(args: {\n summary: string\n leafUuid: string\n sessionId?: string\n}): void {\n const sessionId = args.sessionId ?? getPybAgentSessionId()\n const cwd = getCwd()\n safeAppendJsonl(getSessionLogFilePath({ cwd, sessionId }), {\n type: 'summary',\n summary: args.summary,\n leafUuid: args.leafUuid,\n } satisfies SessionJsonlEntry)\n}\n\nexport function appendSessionCustomTitleRecord(args: {\n sessionId: string\n customTitle: string\n}): void {\n const cwd = getCwd()\n safeAppendJsonl(getSessionLogFilePath({ cwd, sessionId: args.sessionId }), {\n type: 'custom-title',\n sessionId: args.sessionId,\n customTitle: args.customTitle,\n } satisfies SessionJsonlEntry)\n if (args.sessionId === getPybAgentSessionId()) {\n currentSessionCustomTitle = args.customTitle\n }\n}\n\nexport function appendSessionTagRecord(args: {\n sessionId: string\n tag: string\n}): void {\n const cwd = getCwd()\n safeAppendJsonl(getSessionLogFilePath({ cwd, sessionId: args.sessionId }), {\n type: 'tag',\n sessionId: args.sessionId,\n tag: args.tag,\n } satisfies SessionJsonlEntry)\n if (args.sessionId === getPybAgentSessionId()) {\n currentSessionTag = args.tag\n }\n}\n\nexport function getCurrentSessionCustomTitle(): string | null {\n return currentSessionCustomTitle\n}\n\nexport function getCurrentSessionTag(): string | null {\n return currentSessionTag\n}\n\nexport function resetSessionJsonlStateForTests(): void {\n lastUuidByFile.clear()\n snapshotWrittenByFile.clear()\n slugBySessionId.clear()\n gitBranchCache = null\n currentSessionCustomTitle = null\n currentSessionTag = null\n}\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": ";;;;;;;;;;;AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,SAAS,YAAY;AAyD9B,SAAS,yBAAiC;AACxC,SAAO,mBAAmB,UAAU;AACtC;AAEO,SAAS,mCAAmC,KAAqB;AACtE,SAAO,IAAI,QAAQ,iBAAiB,GAAG;AACzC;AAEO,SAAS,wBAAgC;AAC9C,SAAO,KAAK,uBAAuB,GAAG,UAAU;AAClD;AAEO,SAAS,qBAAqB,KAAqB;AACxD,SAAO,KAAK,sBAAsB,GAAG,mCAAmC,GAAG,CAAC;AAC9E;AAEO,SAAS,sBAAsB,MAG3B;AACT,SAAO,KAAK,qBAAqB,KAAK,GAAG,GAAG,GAAG,KAAK,SAAS,QAAQ;AACvE;AASA,SAAS,UAAU,KAAmB;AACpC,MAAI,WAAW,GAAG,EAAG;AACrB,YAAU,KAAK,EAAE,WAAW,KAAK,CAAC;AACpC;AAEA,SAAS,eAAe,MAAoB;AAC1C,YAAU,QAAQ,IAAI,CAAC;AACvB,MAAI,CAAC,WAAW,IAAI,EAAG,eAAc,MAAM,IAAI,MAAM;AACvD;AAEA,SAAS,gBAAgB,MAAc,QAAuB;AAC5D,MAAI;AACF,mBAAe,IAAI;AACnB,mBAAe,MAAM,KAAK,UAAU,MAAM,IAAI,MAAM,MAAM;AAAA,EAC5D,QAAQ;AAAA,EACR;AACF;AAKA,IAAI,4BAA2C;AAC/C,IAAI,oBAAmC;AAgNhC,SAAS,+BAA+B,MAGtC;AACP,QAAM,MAAM,OAAO;AACnB,kBAAgB,sBAAsB,EAAE,KAAK,WAAW,KAAK,UAAU,CAAC,GAAG;AAAA,IACzE,MAAM;AAAA,IACN,WAAW,KAAK;AAAA,IAChB,aAAa,KAAK;AAAA,EACpB,CAA6B;AAC7B,MAAI,KAAK,cAAc,qBAAqB,GAAG;AAC7C,gCAA4B,KAAK;AAAA,EACnC;AACF;AAEO,SAAS,uBAAuB,MAG9B;AACP,QAAM,MAAM,OAAO;AACnB,kBAAgB,sBAAsB,EAAE,KAAK,WAAW,KAAK,UAAU,CAAC,GAAG;AAAA,IACzE,MAAM;AAAA,IACN,WAAW,KAAK;AAAA,IAChB,KAAK,KAAK;AAAA,EACZ,CAA6B;AAC7B,MAAI,KAAK,cAAc,qBAAqB,GAAG;AAC7C,wBAAoB,KAAK;AAAA,EAC3B;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -4,7 +4,7 @@ const require = __pybCreateRequire(import.meta.url);
|
|
|
4
4
|
// package.json
|
|
5
5
|
var package_default = {
|
|
6
6
|
name: "pybao-cli",
|
|
7
|
-
version: "1.5.
|
|
7
|
+
version: "1.5.10",
|
|
8
8
|
bin: {
|
|
9
9
|
pyb: "cli.js",
|
|
10
10
|
"pyb-acp": "cli-acp.js"
|
|
@@ -39,6 +39,9 @@ var package_default = {
|
|
|
39
39
|
"scripts/cli-wrapper.cjs",
|
|
40
40
|
"scripts/cli-acp-wrapper.cjs",
|
|
41
41
|
"scripts/postinstall.js",
|
|
42
|
+
"scripts/typed-sql-release-gate.mjs",
|
|
43
|
+
"scripts/typed-sql-install-smoke.mjs",
|
|
44
|
+
"scripts/typed-sql-no-fallback-gate.mjs",
|
|
42
45
|
".npmrc",
|
|
43
46
|
"resources/**/*"
|
|
44
47
|
],
|
|
@@ -59,9 +62,7 @@ var package_default = {
|
|
|
59
62
|
"test:unit": "bun test --preload ./tests/setup/native-lock-test-setup.ts tests/unit",
|
|
60
63
|
"test:integration": "bun test tests/integration",
|
|
61
64
|
"test:e2e": "bun test tests/e2e",
|
|
62
|
-
"gate:auto-compact": "bun run scripts/auto-compact-gate-check.mjs",
|
|
63
65
|
"gate:runtime-assets": "bun run scripts/runtime-assets-gate-check.mjs",
|
|
64
|
-
"gate:ripgrep-layout": "node scripts/ripgrep-resource-layout-gate.mjs",
|
|
65
66
|
"preflight:runtime-assets": "node scripts/runtime-assets-preflight.mjs",
|
|
66
67
|
"verify:runtime-assets": "node scripts/runtime-assets-verify.mjs",
|
|
67
68
|
"validate:runtime-assets-contract": "node scripts/runtime-assets-schema-validate.mjs",
|
|
@@ -69,16 +70,19 @@ var package_default = {
|
|
|
69
70
|
"gate:runtime-assets-trend-store": "node scripts/runtime-assets-trend-store.mjs",
|
|
70
71
|
"gate:runtime-assets-trend": "node scripts/runtime-assets-trend-gate.mjs",
|
|
71
72
|
"report:runtime-assets-trend": "node scripts/runtime-assets-trend-report.mjs",
|
|
72
|
-
"
|
|
73
|
+
"gate:typed-compat-retirement": "node scripts/typed-compat-retirement-gate.mjs",
|
|
74
|
+
"plan:typed-compat-retirement": "node scripts/typed-compat-retirement-plan.mjs",
|
|
75
|
+
"enforce:typed-compat-retirement": "node scripts/typed-compat-retirement-enforce.mjs",
|
|
76
|
+
"gate:typed-sql-release": "node scripts/typed-sql-release-gate.mjs",
|
|
77
|
+
"smoke:typed-sql-install": "node scripts/typed-sql-install-smoke.mjs",
|
|
78
|
+
"gate:typed-sql-no-fallback": "node scripts/typed-sql-no-fallback-gate.mjs",
|
|
73
79
|
typecheck: "tsc --noEmit",
|
|
74
80
|
prepare: "bun run scripts/install-hooks.mjs",
|
|
75
81
|
"sync:native-lock": "node scripts/sync-native-lock-versions.mjs",
|
|
76
82
|
"publish:native-lock": "node scripts/publish-native-lock.mjs",
|
|
77
83
|
"verify:native-lock": "node scripts/verify-native-lock.mjs",
|
|
78
84
|
"publish:dev": "bun run scripts/publish-dev.js",
|
|
79
|
-
"publish:release": "bun run scripts/publish-release.js"
|
|
80
|
-
"bench:startup": "bun run scripts/bench-startup.mjs",
|
|
81
|
-
"parity:reference": "bun run scripts/reference-parity-check.mjs"
|
|
85
|
+
"publish:release": "bun run scripts/publish-release.js"
|
|
82
86
|
},
|
|
83
87
|
dependencies: {
|
|
84
88
|
"@anthropic-ai/bedrock-sdk": "^0.12.6",
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../package.json", "../src/constants/macros.ts"],
|
|
4
|
+
"sourcesContent": ["{\n \"name\": \"pybao-cli\",\n \"version\": \"1.5.10\",\n \"bin\": {\n \"pyb\": \"cli.js\",\n \"pyb-acp\": \"cli-acp.js\"\n },\n \"engines\": {\n \"node\": \">=20.18.1\"\n },\n \"main\": \"cli.js\",\n \"author\": \"PYB-XC\",\n \"license\": \"MIT\",\n \"description\": \"PYB-CLI - Minimal AI Agent with multi-model support and CLI interface\",\n \"keywords\": [\n \"ai\",\n \"agent\",\n \"minimal\",\n \"claude\"\n ],\n \"homepage\": \"https://github.com/pyb-xc/pyb-ts\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/pyb-xc/pyb-ts.git\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/pyb-xc/pyb-ts/issues\"\n },\n \"files\": [\n \"cli.js\",\n \"cli-acp.js\",\n \"yoga.wasm\",\n \"dist/**/*\",\n \"scripts/binary-utils.cjs\",\n \"scripts/cli-wrapper.cjs\",\n \"scripts/cli-acp-wrapper.cjs\",\n \"scripts/postinstall.js\",\n \"scripts/typed-sql-release-gate.mjs\",\n \"scripts/typed-sql-install-smoke.mjs\",\n \"scripts/typed-sql-no-fallback-gate.mjs\",\n \".npmrc\",\n \"resources/**/*\"\n ],\n \"scripts\": {\n \"dev\": \"bun run ./src/entrypoints/cli.tsx --verbose\",\n \"build:npm\": \"bun scripts/build.mjs\",\n \"build\": \"npm run build:npm\",\n \"build:binary\": \"node scripts/build-binary.mjs\",\n \"build:native-lock\": \"node scripts/build-native-lock.mjs\",\n \"clean\": \"node scripts/clean.mjs\",\n \"prepublishOnly\": \"npm run build:npm && node scripts/prepublish-check.js\",\n \"postinstall\": \"node scripts/postinstall.js || true\",\n \"format\": \"prettier --write \\\"src/**/*.{ts,tsx,js,jsx,json}\\\" \\\"tests/**/*.{ts,tsx,js,jsx,json}\\\"\",\n \"format:check\": \"prettier --check \\\"src/**/*.{ts,tsx,js,jsx,json}\\\" \\\"tests/**/*.{ts,tsx,js,jsx,json}\\\"\",\n \"lint\": \"eslint . --ext .ts,.tsx,.js --max-warnings 0\",\n \"lint:fix\": \"eslint . --ext .ts,.tsx,.js --fix\",\n \"test\": \"bun test\",\n \"test:unit\": \"bun test --preload ./tests/setup/native-lock-test-setup.ts tests/unit\",\n \"test:integration\": \"bun test tests/integration\",\n \"test:e2e\": \"bun test tests/e2e\",\n \"gate:runtime-assets\": \"bun run scripts/runtime-assets-gate-check.mjs\",\n \"preflight:runtime-assets\": \"node scripts/runtime-assets-preflight.mjs\",\n \"verify:runtime-assets\": \"node scripts/runtime-assets-verify.mjs\",\n \"validate:runtime-assets-contract\": \"node scripts/runtime-assets-schema-validate.mjs\",\n \"gate:runtime-assets-threshold\": \"node scripts/runtime-assets-threshold-gate.mjs\",\n \"gate:runtime-assets-trend-store\": \"node scripts/runtime-assets-trend-store.mjs\",\n \"gate:runtime-assets-trend\": \"node scripts/runtime-assets-trend-gate.mjs\",\n \"report:runtime-assets-trend\": \"node scripts/runtime-assets-trend-report.mjs\",\n \"gate:typed-compat-retirement\": \"node scripts/typed-compat-retirement-gate.mjs\",\n \"plan:typed-compat-retirement\": \"node scripts/typed-compat-retirement-plan.mjs\",\n \"enforce:typed-compat-retirement\": \"node scripts/typed-compat-retirement-enforce.mjs\",\n \"gate:typed-sql-release\": \"node scripts/typed-sql-release-gate.mjs\",\n \"smoke:typed-sql-install\": \"node scripts/typed-sql-install-smoke.mjs\",\n \"gate:typed-sql-no-fallback\": \"node scripts/typed-sql-no-fallback-gate.mjs\",\n \"typecheck\": \"tsc --noEmit\",\n \"prepare\": \"bun run scripts/install-hooks.mjs\",\n \"sync:native-lock\": \"node scripts/sync-native-lock-versions.mjs\",\n \"publish:native-lock\": \"node scripts/publish-native-lock.mjs\",\n \"verify:native-lock\": \"node scripts/verify-native-lock.mjs\",\n \"publish:dev\": \"bun run scripts/publish-dev.js\",\n \"publish:release\": \"bun run scripts/publish-release.js\"\n },\n \"dependencies\": {\n \"@anthropic-ai/bedrock-sdk\": \"^0.12.6\",\n \"@anthropic-ai/sdk\": \"^0.39.0\",\n \"@anthropic-ai/vertex-sdk\": \"^0.7.0\",\n \"@astrojs/language-server\": \"2.16.2\",\n \"@aws-sdk/client-bedrock-runtime\": \"3.797.0\",\n \"@commander-js/extra-typings\": \"^13.1.0\",\n \"@inkjs/ui\": \"^2.0.0\",\n \"@modelcontextprotocol/sdk\": \"^1.15.1\",\n \"@prisma/language-server\": \"31.3.4\",\n \"@types/lodash-es\": \"^4.17.12\",\n \"@types/react\": \"^19.1.8\",\n \"@vscode/ripgrep\": \"^1.17.0\",\n \"@vue/language-server\": \"3.2.2\",\n \"ajv\": \"^8.17.1\",\n \"ansi-escapes\": \"^7.0.0\",\n \"bash-language-server\": \"5.6.0\",\n \"chalk\": \"^5.4.1\",\n \"cli-highlight\": \"^2.1.11\",\n \"cli-table3\": \"^0.6.5\",\n \"commander\": \"^13.1.0\",\n \"debug\": \"^4.4.1\",\n \"diff\": \"^7.0.0\",\n \"dockerfile-language-server-nodejs\": \"0.15.0\",\n \"dotenv\": \"^16.6.1\",\n \"env-paths\": \"^3.0.0\",\n \"fflate\": \"^0.8.2\",\n \"figures\": \"^6.1.0\",\n \"glob\": \"^11.0.3\",\n \"graphql-language-service-cli\": \"3.5.0\",\n \"gray-matter\": \"^4.0.3\",\n \"highlight.js\": \"^11.11.1\",\n \"ignore\": \"^7.0.5\",\n \"ink\": \"5.2.1\",\n \"ink-link\": \"^4.1.0\",\n \"ink-select-input\": \"^6.2.0\",\n \"ink-text-input\": \"^6.0.0\",\n \"intelephense\": \"1.16.3\",\n \"js-yaml\": \"^4.1.1\",\n \"lodash-es\": \"^4.17.21\",\n \"lru-cache\": \"^11.1.0\",\n \"marked\": \"^15.0.12\",\n \"minimatch\": \"^10.1.1\",\n \"nanoid\": \"^5.1.5\",\n \"node-html-parser\": \"^7.0.1\",\n \"openai\": \"4.104.0\",\n \"pyright\": \"1.1.408\",\n \"react\": \"18.3.1\",\n \"semver\": \"^7.7.2\",\n \"shell-quote\": \"1.8.3\",\n \"spawn-rx\": \"^5.1.2\",\n \"string-width\": \"^7.2.0\",\n \"strip-ansi\": \"^7.1.0\",\n \"svelte-language-server\": \"0.17.23\",\n \"tsx\": \"^4.20.3\",\n \"typescript-language-server\": \"5.1.3\",\n \"undici\": \"^7.11.0\",\n \"vscode-jsonrpc\": \"8.2.1\",\n \"vscode-langservers-extracted\": \"4.10.0\",\n \"web-tree-sitter\": \"0.25.10\",\n \"which\": \"^6.0.0\",\n \"wrap-ansi\": \"^9.0.0\",\n \"yaml-language-server\": \"1.19.2\",\n \"zod\": \"^3.25.76\",\n \"zod-to-json-schema\": \"^3.24.6\"\n },\n \"devDependencies\": {\n \"@types/bun\": \"latest\",\n \"@types/jest\": \"^30.0.0\",\n \"@types/node\": \"^24.1.0\",\n \"@types/which\": \"^3.0.4\",\n \"@typescript-eslint/eslint-plugin\": \"^8.50.1\",\n \"@typescript-eslint/parser\": \"^8.50.1\",\n \"abort-controller\": \"3.0.0\",\n \"bun-types\": \"latest\",\n \"cheerio\": \"1.1.2\",\n \"esbuild\": \"^0.25.9\",\n \"eslint\": \"8.57.0\",\n \"eslint-plugin-react-hooks\": \"^7.0.1\",\n \"ink-testing-library\": \"4.0.0\",\n \"node-fetch\": \"3.3.2\",\n \"prettier\": \"^3.6.2\",\n \"react-devtools-core\": \"^7.0.1\",\n \"tree-sitter-bash\": \"0.25.1\",\n \"tree-sitter-c-sharp\": \"0.23.1\",\n \"tree-sitter-clojure\": \"0.4.0\",\n \"tree-sitter-cpp\": \"0.23.4\",\n \"tree-sitter-go\": \"0.25.0\",\n \"tree-sitter-haskell\": \"0.23.1\",\n \"tree-sitter-java\": \"0.23.5\",\n \"tree-sitter-julia\": \"0.23.1\",\n \"tree-sitter-nix\": \"0.0.2\",\n \"tree-sitter-ocaml\": \"0.24.2\",\n \"tree-sitter-python\": \"0.25.0\",\n \"tree-sitter-rust\": \"0.24.0\",\n \"tree-sitter-scala\": \"0.24.0\",\n \"tree-sitter-swift\": \"0.7.1\",\n \"tree-sitter-typescript\": \"0.23.2\",\n \"turndown\": \"7.2.2\",\n \"typescript\": \"^5.9.2\"\n },\n \"overrides\": {\n \"@aws-sdk/client-bedrock-runtime\": \"3.797.0\",\n \"@smithy/smithy-client\": \"2.5.1\",\n \"parse5-htmlparser2-tree-adapter\": \"6.0.1\"\n },\n \"optionalDependencies\": {\n \"@puyib-cli/lock-win32-x64-msvc\": \"1.4.55\",\n \"@puyib-cli/lock-win32-arm64-msvc\": \"1.4.56\",\n \"@puyib-cli/lock-linux-x64-gnu\": \"1.4.56\",\n \"@puyib-cli/lock-linux-x64-musl\": \"1.4.56\",\n \"@puyib-cli/lock-linux-arm64-gnu\": \"1.4.56\",\n \"@puyib-cli/lock-linux-armv7-gnueabihf\": \"1.4.56\",\n \"@puyib-cli/lock-darwin-x64\": \"1.4.56\",\n \"@puyib-cli/lock-darwin-arm64\": \"1.4.56\"\n },\n \"pybNativeLockPlatforms\": [\n \"win32-x64-msvc\",\n \"win32-arm64-msvc\",\n \"linux-x64-gnu\",\n \"linux-x64-musl\",\n \"linux-arm64-gnu\",\n \"linux-armv7-gnueabihf\",\n \"darwin-x64\",\n \"darwin-arm64\"\n ]\n}\n", "import pkg from '../../package.json'\n\nexport const MACRO = {\n VERSION: pkg.version,\n README_URL: 'https://github.com/pyb-xc/pyb-ts#readme',\n PACKAGE_URL: 'pybao-cli',\n ISSUES_EXPLAINER:\n 'report the issue at https://github.com/pyb-xc/pyb-ts/issues',\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -2,7 +2,7 @@ import { createRequire as __pybCreateRequire } from "node:module";
|
|
|
2
2
|
const require = __pybCreateRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
getSessionProjectDir
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-TQTC7KJZ.js";
|
|
6
6
|
import {
|
|
7
7
|
isUuid
|
|
8
8
|
} from "./chunk-5P7HBXTD.js";
|
|
@@ -3,13 +3,13 @@ const require = __pybCreateRequire(import.meta.url);
|
|
|
3
3
|
import {
|
|
4
4
|
getGlobalConfig,
|
|
5
5
|
saveGlobalConfig
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-AO6J7LEE.js";
|
|
7
7
|
import {
|
|
8
8
|
debug
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-2KTGONPT.js";
|
|
10
10
|
import {
|
|
11
11
|
logError
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-7SZNDNLK.js";
|
|
13
13
|
|
|
14
14
|
// src/utils/model/index.ts
|
|
15
15
|
import { memoize } from "lodash-es";
|
|
@@ -5,12 +5,12 @@ import {
|
|
|
5
5
|
} from "./chunk-BJSWTHRM.js";
|
|
6
6
|
import {
|
|
7
7
|
debug
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-2KTGONPT.js";
|
|
9
9
|
import {
|
|
10
10
|
getCwd,
|
|
11
11
|
logError,
|
|
12
12
|
resolveXdgDataPath
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-7SZNDNLK.js";
|
|
14
14
|
|
|
15
15
|
// src/services/plugins/customCommands.ts
|
|
16
16
|
import { existsSync, readFileSync, readdirSync, statSync } from "fs";
|
|
@@ -5,14 +5,14 @@ import {
|
|
|
5
5
|
} from "./chunk-B6IMQJZM.js";
|
|
6
6
|
import {
|
|
7
7
|
loadSettingsWithLegacyFallback
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-7FGPQ22V.js";
|
|
9
9
|
import {
|
|
10
10
|
getSessionPlugins
|
|
11
11
|
} from "./chunk-BJSWTHRM.js";
|
|
12
12
|
import {
|
|
13
13
|
getCwd,
|
|
14
14
|
logError
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-7SZNDNLK.js";
|
|
16
16
|
|
|
17
17
|
// src/utils/session/pybHooks.ts
|
|
18
18
|
import { spawn } from "child_process";
|
|
@@ -496,7 +496,7 @@ async function runPromptHook(args) {
|
|
|
496
496
|
fallbackTimeoutMs: args.fallbackTimeoutMs
|
|
497
497
|
});
|
|
498
498
|
try {
|
|
499
|
-
const { queryQuick } = await import("./llmLazy-
|
|
499
|
+
const { queryQuick } = await import("./llmLazy-XR66QEVP.js");
|
|
500
500
|
const systemPrompt = [
|
|
501
501
|
"You are executing a Pyb prompt hook.",
|
|
502
502
|
"Return a single JSON object only (no markdown, no prose).",
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { createRequire as __pybCreateRequire } from "node:module";
|
|
2
|
+
const require = __pybCreateRequire(import.meta.url);
|
|
3
|
+
import {
|
|
4
|
+
logError
|
|
5
|
+
} from "./chunk-7SZNDNLK.js";
|
|
6
|
+
|
|
7
|
+
// src/utils/session/conversationPersistence.ts
|
|
8
|
+
import {
|
|
9
|
+
existsSync,
|
|
10
|
+
mkdirSync,
|
|
11
|
+
readFileSync,
|
|
12
|
+
renameSync,
|
|
13
|
+
unlinkSync,
|
|
14
|
+
writeFileSync
|
|
15
|
+
} from "fs";
|
|
16
|
+
import { join } from "path";
|
|
17
|
+
var PERSISTENCE_VERSION = 1;
|
|
18
|
+
function sanitizeSessionId(sessionId) {
|
|
19
|
+
return sessionId.replace(/[^a-zA-Z0-9_-]/g, "_");
|
|
20
|
+
}
|
|
21
|
+
function isValidPersistedCompletedQuery(value) {
|
|
22
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return false;
|
|
23
|
+
const item = value;
|
|
24
|
+
return typeof item.queryId === "string" && typeof item.userMessageUUID === "string" && typeof item.userQuery === "string" && typeof item.summary === "string" && typeof item.completedAt === "number" && (item.finish === "end_turn" || item.finish === "tool_calls" || item.finish === "max_tokens" || item.finish === "pause_turn");
|
|
25
|
+
}
|
|
26
|
+
function isValidPersistedConversationState(value) {
|
|
27
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return false;
|
|
28
|
+
const state = value;
|
|
29
|
+
return typeof state.version === "number" && typeof state.sessionId === "string" && Array.isArray(state.completedQueries) && state.completedQueries.every(isValidPersistedCompletedQuery) && typeof state.lastUpdatedAt === "number";
|
|
30
|
+
}
|
|
31
|
+
var FileSystemConversationPersistence = class {
|
|
32
|
+
constructor(baseDir) {
|
|
33
|
+
this.baseDir = baseDir;
|
|
34
|
+
}
|
|
35
|
+
getFilePath(sessionId) {
|
|
36
|
+
return join(this.baseDir, `${sanitizeSessionId(sessionId)}.json`);
|
|
37
|
+
}
|
|
38
|
+
saveSync(sessionId, state) {
|
|
39
|
+
const filePath = this.getFilePath(sessionId);
|
|
40
|
+
const tempPath = `${filePath}.tmp`;
|
|
41
|
+
try {
|
|
42
|
+
mkdirSync(this.baseDir, { recursive: true });
|
|
43
|
+
writeFileSync(tempPath, JSON.stringify(state, null, 2), "utf8");
|
|
44
|
+
renameSync(tempPath, filePath);
|
|
45
|
+
} catch (error) {
|
|
46
|
+
logError(error);
|
|
47
|
+
try {
|
|
48
|
+
if (existsSync(tempPath)) unlinkSync(tempPath);
|
|
49
|
+
} catch {
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
loadSync(sessionId) {
|
|
54
|
+
const filePath = this.getFilePath(sessionId);
|
|
55
|
+
if (!existsSync(filePath)) return null;
|
|
56
|
+
try {
|
|
57
|
+
const raw = readFileSync(filePath, "utf8");
|
|
58
|
+
const parsed = JSON.parse(raw);
|
|
59
|
+
if (!isValidPersistedConversationState(parsed)) return null;
|
|
60
|
+
return parsed;
|
|
61
|
+
} catch {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
clearSync(sessionId) {
|
|
66
|
+
const filePath = this.getFilePath(sessionId);
|
|
67
|
+
try {
|
|
68
|
+
if (existsSync(filePath)) unlinkSync(filePath);
|
|
69
|
+
} catch (error) {
|
|
70
|
+
logError(error);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
export {
|
|
76
|
+
PERSISTENCE_VERSION,
|
|
77
|
+
FileSystemConversationPersistence
|
|
78
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/utils/session/conversationPersistence.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n existsSync,\n mkdirSync,\n readFileSync,\n renameSync,\n unlinkSync,\n writeFileSync,\n} from 'fs'\nimport { join } from 'path'\nimport { logError } from '@utils/log'\n\nexport const PERSISTENCE_VERSION = 1\n\nexport type PersistedCompletedQuery = {\n queryId: string\n userMessageUUID: string\n userQuery: string\n summary: string\n completedAt: number\n finish: 'end_turn' | 'tool_calls' | 'max_tokens' | 'pause_turn'\n}\n\nexport type PersistedConversationState = {\n version: number\n sessionId: string\n completedQueries: PersistedCompletedQuery[]\n lastUpdatedAt: number\n}\n\nexport interface ConversationPersistence {\n saveSync(sessionId: string, state: PersistedConversationState): void\n loadSync(sessionId: string): PersistedConversationState | null\n clearSync(sessionId: string): void\n}\n\nfunction sanitizeSessionId(sessionId: string): string {\n return sessionId.replace(/[^a-zA-Z0-9_-]/g, '_')\n}\n\nfunction isValidPersistedCompletedQuery(value: unknown): value is PersistedCompletedQuery {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return false\n const item = value as PersistedCompletedQuery\n return (\n typeof item.queryId === 'string' &&\n typeof item.userMessageUUID === 'string' &&\n typeof item.userQuery === 'string' &&\n typeof item.summary === 'string' &&\n typeof item.completedAt === 'number' &&\n (item.finish === 'end_turn' ||\n item.finish === 'tool_calls' ||\n item.finish === 'max_tokens' ||\n item.finish === 'pause_turn')\n )\n}\n\nfunction isValidPersistedConversationState(\n value: unknown,\n): value is PersistedConversationState {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return false\n const state = value as PersistedConversationState\n return (\n typeof state.version === 'number' &&\n typeof state.sessionId === 'string' &&\n Array.isArray(state.completedQueries) &&\n state.completedQueries.every(isValidPersistedCompletedQuery) &&\n typeof state.lastUpdatedAt === 'number'\n )\n}\n\nexport class FileSystemConversationPersistence implements ConversationPersistence {\n constructor(private readonly baseDir: string) {}\n\n private getFilePath(sessionId: string): string {\n return join(this.baseDir, `${sanitizeSessionId(sessionId)}.json`)\n }\n\n saveSync(sessionId: string, state: PersistedConversationState): void {\n const filePath = this.getFilePath(sessionId)\n const tempPath = `${filePath}.tmp`\n try {\n mkdirSync(this.baseDir, { recursive: true })\n writeFileSync(tempPath, JSON.stringify(state, null, 2), 'utf8')\n renameSync(tempPath, filePath)\n } catch (error) {\n logError(error)\n try {\n if (existsSync(tempPath)) unlinkSync(tempPath)\n } catch {}\n }\n }\n\n loadSync(sessionId: string): PersistedConversationState | null {\n const filePath = this.getFilePath(sessionId)\n if (!existsSync(filePath)) return null\n try {\n const raw = readFileSync(filePath, 'utf8')\n const parsed = JSON.parse(raw) as unknown\n if (!isValidPersistedConversationState(parsed)) return null\n return parsed\n } catch {\n return null\n }\n }\n\n clearSync(sessionId: string): void {\n const filePath = this.getFilePath(sessionId)\n try {\n if (existsSync(filePath)) unlinkSync(filePath)\n } catch (error) {\n logError(error)\n }\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,YAAY;AAGd,IAAM,sBAAsB;AAwBnC,SAAS,kBAAkB,WAA2B;AACpD,SAAO,UAAU,QAAQ,mBAAmB,GAAG;AACjD;AAEA,SAAS,+BAA+B,OAAkD;AACxF,MAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,EAAG,QAAO;AACxE,QAAM,OAAO;AACb,SACE,OAAO,KAAK,YAAY,YACxB,OAAO,KAAK,oBAAoB,YAChC,OAAO,KAAK,cAAc,YAC1B,OAAO,KAAK,YAAY,YACxB,OAAO,KAAK,gBAAgB,aAC3B,KAAK,WAAW,cACf,KAAK,WAAW,gBAChB,KAAK,WAAW,gBAChB,KAAK,WAAW;AAEtB;AAEA,SAAS,kCACP,OACqC;AACrC,MAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,EAAG,QAAO;AACxE,QAAM,QAAQ;AACd,SACE,OAAO,MAAM,YAAY,YACzB,OAAO,MAAM,cAAc,YAC3B,MAAM,QAAQ,MAAM,gBAAgB,KACpC,MAAM,iBAAiB,MAAM,8BAA8B,KAC3D,OAAO,MAAM,kBAAkB;AAEnC;AAEO,IAAM,oCAAN,MAA2E;AAAA,EAChF,YAA6B,SAAiB;AAAjB;AAAA,EAAkB;AAAA,EAEvC,YAAY,WAA2B;AAC7C,WAAO,KAAK,KAAK,SAAS,GAAG,kBAAkB,SAAS,CAAC,OAAO;AAAA,EAClE;AAAA,EAEA,SAAS,WAAmB,OAAyC;AACnE,UAAM,WAAW,KAAK,YAAY,SAAS;AAC3C,UAAM,WAAW,GAAG,QAAQ;AAC5B,QAAI;AACF,gBAAU,KAAK,SAAS,EAAE,WAAW,KAAK,CAAC;AAC3C,oBAAc,UAAU,KAAK,UAAU,OAAO,MAAM,CAAC,GAAG,MAAM;AAC9D,iBAAW,UAAU,QAAQ;AAAA,IAC/B,SAAS,OAAO;AACd,eAAS,KAAK;AACd,UAAI;AACF,YAAI,WAAW,QAAQ,EAAG,YAAW,QAAQ;AAAA,MAC/C,QAAQ;AAAA,MAAC;AAAA,IACX;AAAA,EACF;AAAA,EAEA,SAAS,WAAsD;AAC7D,UAAM,WAAW,KAAK,YAAY,SAAS;AAC3C,QAAI,CAAC,WAAW,QAAQ,EAAG,QAAO;AAClC,QAAI;AACF,YAAM,MAAM,aAAa,UAAU,MAAM;AACzC,YAAM,SAAS,KAAK,MAAM,GAAG;AAC7B,UAAI,CAAC,kCAAkC,MAAM,EAAG,QAAO;AACvD,aAAO;AAAA,IACT,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,UAAU,WAAyB;AACjC,UAAM,WAAW,KAAK,YAAY,SAAS;AAC3C,QAAI;AACF,UAAI,WAAW,QAAQ,EAAG,YAAW,QAAQ;AAAA,IAC/C,SAAS,OAAO;AACd,eAAS,KAAK;AAAA,IAChB;AAAA,EACF;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|