@multiplayer-app/sandbox 0.0.21 → 0.0.22

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.
Files changed (134) hide show
  1. package/dist/agents/blocknote.agent.d.ts +6 -0
  2. package/dist/agents/blocknote.agent.d.ts.map +1 -0
  3. package/dist/agents/blocknote.agent.js +18 -0
  4. package/dist/agents/blocknote.agent.js.map +1 -0
  5. package/dist/agents/filingramp-fetch.agent.d.ts +4 -0
  6. package/dist/agents/filingramp-fetch.agent.d.ts.map +1 -0
  7. package/dist/agents/filingramp-fetch.agent.js +195 -0
  8. package/dist/agents/filingramp-fetch.agent.js.map +1 -0
  9. package/dist/agents/html-generator.agent.d.ts +1 -3
  10. package/dist/agents/html-generator.agent.d.ts.map +1 -1
  11. package/dist/agents/html-generator.agent.js +4 -90
  12. package/dist/agents/html-generator.agent.js.map +1 -1
  13. package/dist/agents/knowledge/filingramp-endpoints.d.ts +23 -0
  14. package/dist/agents/knowledge/filingramp-endpoints.d.ts.map +1 -0
  15. package/dist/agents/knowledge/filingramp-endpoints.js +116 -0
  16. package/dist/agents/knowledge/filingramp-endpoints.js.map +1 -0
  17. package/dist/agents/markdown-generator.agent.d.ts.map +1 -1
  18. package/dist/agents/markdown-generator.agent.js +10 -5
  19. package/dist/agents/markdown-generator.agent.js.map +1 -1
  20. package/dist/agents/shared/blocknote-system-prompt.d.ts +2 -0
  21. package/dist/agents/shared/blocknote-system-prompt.d.ts.map +1 -0
  22. package/dist/agents/shared/blocknote-system-prompt.js +40 -0
  23. package/dist/agents/shared/blocknote-system-prompt.js.map +1 -0
  24. package/dist/agents/shared/get-latest-session-artifact.tool.d.ts +7 -0
  25. package/dist/agents/shared/get-latest-session-artifact.tool.d.ts.map +1 -0
  26. package/dist/agents/shared/get-latest-session-artifact.tool.js +43 -0
  27. package/dist/agents/shared/get-latest-session-artifact.tool.js.map +1 -0
  28. package/dist/agents/shared/get-session-artifact-content.tool.d.ts +7 -0
  29. package/dist/agents/shared/get-session-artifact-content.tool.d.ts.map +1 -0
  30. package/dist/agents/shared/get-session-artifact-content.tool.js +44 -0
  31. package/dist/agents/shared/get-session-artifact-content.tool.js.map +1 -0
  32. package/dist/agents/shared/list-session-artifact-paths.tool.d.ts +5 -0
  33. package/dist/agents/shared/list-session-artifact-paths.tool.d.ts.map +1 -0
  34. package/dist/agents/shared/list-session-artifact-paths.tool.js +37 -0
  35. package/dist/agents/shared/list-session-artifact-paths.tool.js.map +1 -0
  36. package/dist/context.d.ts +2 -0
  37. package/dist/context.d.ts.map +1 -1
  38. package/dist/context.js.map +1 -1
  39. package/dist/create-builder-api.d.ts +2 -0
  40. package/dist/create-builder-api.d.ts.map +1 -1
  41. package/dist/create-builder-api.js +1 -0
  42. package/dist/create-builder-api.js.map +1 -1
  43. package/dist/index.d.ts +2 -0
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +3 -1
  46. package/dist/index.js.map +1 -1
  47. package/dist/lib/account-dbs/account-db-repository.d.ts +10 -0
  48. package/dist/lib/account-dbs/account-db-repository.d.ts.map +1 -0
  49. package/dist/lib/account-dbs/account-db-repository.js +3 -0
  50. package/dist/lib/account-dbs/account-db-repository.js.map +1 -0
  51. package/dist/lib/account-dbs/account-db.d.ts +59 -0
  52. package/dist/lib/account-dbs/account-db.d.ts.map +1 -0
  53. package/dist/lib/account-dbs/account-db.js +7 -0
  54. package/dist/lib/account-dbs/account-db.js.map +1 -0
  55. package/dist/lib/ai/agent-ai-service.d.ts +3 -0
  56. package/dist/lib/ai/agent-ai-service.d.ts.map +1 -0
  57. package/dist/lib/ai/agent-ai-service.js +15 -0
  58. package/dist/lib/ai/agent-ai-service.js.map +1 -0
  59. package/dist/lib/ai/ai-error-details.d.ts +13 -0
  60. package/dist/lib/ai/ai-error-details.d.ts.map +1 -0
  61. package/dist/lib/ai/ai-error-details.js +84 -0
  62. package/dist/lib/ai/ai-error-details.js.map +1 -0
  63. package/dist/lib/ai/generate-ai-text.d.ts +12 -0
  64. package/dist/lib/ai/generate-ai-text.d.ts.map +1 -0
  65. package/dist/lib/ai/generate-ai-text.js +105 -0
  66. package/dist/lib/ai/generate-ai-text.js.map +1 -0
  67. package/dist/lib/ai/run-explicit-agent.d.ts +15 -0
  68. package/dist/lib/ai/run-explicit-agent.d.ts.map +1 -0
  69. package/dist/lib/ai/run-explicit-agent.js +30 -0
  70. package/dist/lib/ai/run-explicit-agent.js.map +1 -0
  71. package/dist/lib/notebooks/notebook-sql-client.d.ts +5 -0
  72. package/dist/lib/notebooks/notebook-sql-client.d.ts.map +1 -0
  73. package/dist/lib/notebooks/notebook-sql-client.js +37 -0
  74. package/dist/lib/notebooks/notebook-sql-client.js.map +1 -0
  75. package/dist/lib/notebooks/notebook-sql-schema.d.ts +16 -0
  76. package/dist/lib/notebooks/notebook-sql-schema.d.ts.map +1 -0
  77. package/dist/lib/notebooks/notebook-sql-schema.js +117 -0
  78. package/dist/lib/notebooks/notebook-sql-schema.js.map +1 -0
  79. package/dist/lib/notebooks/notebook-sql.d.ts +9 -0
  80. package/dist/lib/notebooks/notebook-sql.d.ts.map +1 -0
  81. package/dist/lib/notebooks/notebook-sql.js +36 -0
  82. package/dist/lib/notebooks/notebook-sql.js.map +1 -0
  83. package/dist/lib/session-artifacts/apply-hashline-edits.d.ts +3 -0
  84. package/dist/lib/session-artifacts/apply-hashline-edits.d.ts.map +1 -0
  85. package/dist/lib/session-artifacts/apply-hashline-edits.js +25 -0
  86. package/dist/lib/session-artifacts/apply-hashline-edits.js.map +1 -0
  87. package/dist/lib/session-artifacts/artifact-text-edit.d.ts +8 -0
  88. package/dist/lib/session-artifacts/artifact-text-edit.d.ts.map +1 -0
  89. package/dist/lib/session-artifacts/artifact-text-edit.js +23 -0
  90. package/dist/lib/session-artifacts/artifact-text-edit.js.map +1 -0
  91. package/dist/lib/session-artifacts/hashline-tag.d.ts +33 -0
  92. package/dist/lib/session-artifacts/hashline-tag.d.ts.map +1 -0
  93. package/dist/lib/session-artifacts/hashline-tag.js +80 -0
  94. package/dist/lib/session-artifacts/hashline-tag.js.map +1 -0
  95. package/dist/lib/session-pages/inject-preview-error-reporter.d.ts +3 -0
  96. package/dist/lib/session-pages/inject-preview-error-reporter.d.ts.map +1 -0
  97. package/dist/lib/session-pages/inject-preview-error-reporter.js +30 -0
  98. package/dist/lib/session-pages/inject-preview-error-reporter.js.map +1 -0
  99. package/dist/lib/session-pages/read-session-artifact.d.ts +7 -0
  100. package/dist/lib/session-pages/read-session-artifact.d.ts.map +1 -0
  101. package/dist/lib/session-pages/read-session-artifact.js +60 -0
  102. package/dist/lib/session-pages/read-session-artifact.js.map +1 -0
  103. package/dist/lib/session-pages/session-pico-css.d.ts +5 -0
  104. package/dist/lib/session-pages/session-pico-css.d.ts.map +1 -0
  105. package/dist/lib/session-pages/session-pico-css.js +11 -0
  106. package/dist/lib/session-pages/session-pico-css.js.map +1 -0
  107. package/dist/realtime/realtime-auth.d.ts +12 -0
  108. package/dist/realtime/realtime-auth.d.ts.map +1 -0
  109. package/dist/realtime/realtime-auth.js +25 -0
  110. package/dist/realtime/realtime-auth.js.map +1 -0
  111. package/dist/realtime/yjs-account-namespace.d.ts +5 -0
  112. package/dist/realtime/yjs-account-namespace.d.ts.map +1 -0
  113. package/dist/realtime/yjs-account-namespace.js +21 -0
  114. package/dist/realtime/yjs-account-namespace.js.map +1 -0
  115. package/dist/routes/account-dbs/errors.d.ts +3 -0
  116. package/dist/routes/account-dbs/errors.d.ts.map +1 -0
  117. package/dist/routes/account-dbs/errors.js +24 -0
  118. package/dist/routes/account-dbs/errors.js.map +1 -0
  119. package/dist/routes/account-dbs.d.ts +2 -0
  120. package/dist/routes/account-dbs.d.ts.map +1 -0
  121. package/dist/routes/account-dbs.js +138 -0
  122. package/dist/routes/account-dbs.js.map +1 -0
  123. package/dist/routes/notebooks/sql-execute.d.ts +3 -0
  124. package/dist/routes/notebooks/sql-execute.d.ts.map +1 -0
  125. package/dist/routes/notebooks/sql-execute.js +45 -0
  126. package/dist/routes/notebooks/sql-execute.js.map +1 -0
  127. package/dist/routes/sql.d.ts +2 -0
  128. package/dist/routes/sql.d.ts.map +1 -0
  129. package/dist/routes/sql.js +50 -0
  130. package/dist/routes/sql.js.map +1 -0
  131. package/dist/server.d.ts.map +1 -1
  132. package/dist/server.js +2 -0
  133. package/dist/server.js.map +1 -1
  134. package/package.json +7 -7
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateAiText = generateAiText;
4
+ const anthropic_1 = require("@ai-sdk/anthropic");
5
+ const google_1 = require("@ai-sdk/google");
6
+ const openai_1 = require("@ai-sdk/openai");
7
+ const ai_sdk_provider_1 = require("@openrouter/ai-sdk-provider");
8
+ const ai_1 = require("ai");
9
+ const builder_api_config_1 = require("../../builder-api-config");
10
+ const context_1 = require("../../context");
11
+ function providerApiKeyField(provider) {
12
+ switch (provider) {
13
+ case 'openai':
14
+ return 'openaiApiKey';
15
+ case 'anthropic':
16
+ return 'anthropicApiKey';
17
+ case 'google':
18
+ return 'googleApiKey';
19
+ case 'openrouter':
20
+ return 'openrouterApiKey';
21
+ }
22
+ }
23
+ function providerBaseUrlField(provider) {
24
+ switch (provider) {
25
+ case 'openai':
26
+ return 'openaiBaseUrl';
27
+ case 'anthropic':
28
+ return 'anthropicBaseUrl';
29
+ case 'google':
30
+ return 'googleBaseUrl';
31
+ case 'openrouter':
32
+ return 'openrouterBaseUrl';
33
+ }
34
+ }
35
+ function platformApiKeyEnv(provider) {
36
+ switch (provider) {
37
+ case 'openai':
38
+ return process.env.OPENAI_API_KEY;
39
+ case 'anthropic':
40
+ return process.env.ANTHROPIC_API_KEY;
41
+ case 'google':
42
+ return process.env.GOOGLE_API_KEY;
43
+ case 'openrouter':
44
+ return process.env.OPENROUTER_API_KEY;
45
+ }
46
+ }
47
+ async function resolveProviderCredential(provider, accountId) {
48
+ const resolver = (0, context_1.getAgentService)().getTenantCredentialResolver();
49
+ const tenantCredentials = await resolver.resolveCredentials({ accountId });
50
+ const apiKeyField = providerApiKeyField(provider);
51
+ const baseUrlField = providerBaseUrlField(provider);
52
+ const tenantApiKey = tenantCredentials[apiKeyField];
53
+ if (tenantApiKey) {
54
+ return {
55
+ apiKey: tenantApiKey,
56
+ baseUrl: tenantCredentials[baseUrlField],
57
+ };
58
+ }
59
+ const platformApiKey = platformApiKeyEnv(provider);
60
+ if (!platformApiKey) {
61
+ throw new Error(`AI provider credentials are not configured for ${provider}`);
62
+ }
63
+ return { apiKey: platformApiKey };
64
+ }
65
+ async function resolveModel(modelId) {
66
+ var _a, _b;
67
+ const { models } = await (0, context_1.getAgentService)().getModelProcessor().getModels();
68
+ if (models.length === 0) {
69
+ throw new Error('No AI models are available');
70
+ }
71
+ const defaultModelId = (_a = modelId !== null && modelId !== void 0 ? modelId : (0, context_1.getBuilderApiContext)().config.ai.defaultModel) !== null && _a !== void 0 ? _a : builder_api_config_1.DEFAULT_AI_MODEL;
72
+ return (_b = models.find((model) => model.id === defaultModelId)) !== null && _b !== void 0 ? _b : models[0];
73
+ }
74
+ function createLanguageModel(model, apiKey, baseUrl) {
75
+ const provider = (model.provider || 'openrouter');
76
+ const providerConfig = baseUrl ? { apiKey, baseURL: baseUrl } : { apiKey };
77
+ switch (provider) {
78
+ case 'openai':
79
+ return (0, openai_1.createOpenAI)(providerConfig)(model.id);
80
+ case 'anthropic':
81
+ return (0, anthropic_1.createAnthropic)(providerConfig)(model.id);
82
+ case 'google':
83
+ return (0, google_1.createGoogleGenerativeAI)(providerConfig)(model.id);
84
+ case 'openrouter':
85
+ return (0, ai_sdk_provider_1.createOpenRouter)(providerConfig)(model.id);
86
+ default:
87
+ throw new Error(`Unsupported AI provider: ${provider}`);
88
+ }
89
+ }
90
+ async function generateAiText(input) {
91
+ var _a, _b;
92
+ const model = await resolveModel(input.model);
93
+ const provider = (model.provider || 'openrouter');
94
+ const { apiKey, baseUrl } = await resolveProviderCredential(provider, input.accountId);
95
+ const { text } = await (0, ai_1.generateText)({
96
+ model: createLanguageModel(model, apiKey, baseUrl),
97
+ system: input.system,
98
+ messages: input.messages,
99
+ temperature: (_a = input.temperature) !== null && _a !== void 0 ? _a : 0.1,
100
+ maxOutputTokens: (_b = input.maxOutputTokens) !== null && _b !== void 0 ? _b : 1500,
101
+ abortSignal: input.signal,
102
+ });
103
+ return text;
104
+ }
105
+ //# sourceMappingURL=generate-ai-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-ai-text.js","sourceRoot":"","sources":["../../../src/lib/ai/generate-ai-text.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { ModelMessage } from 'ai';
2
+ export interface RunExplicitAgentTextInput {
3
+ agentName: string;
4
+ accountId: string;
5
+ model?: string;
6
+ system?: string;
7
+ messages: ModelMessage[];
8
+ signal?: AbortSignal;
9
+ temperature?: number;
10
+ maxOutputTokens?: number;
11
+ /** Included in structured logs to identify which notebook assistant step failed. */
12
+ logLabel?: string;
13
+ }
14
+ export declare function runExplicitAgentText(input: RunExplicitAgentTextInput): Promise<string>;
15
+ //# sourceMappingURL=run-explicit-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-explicit-agent.d.ts","sourceRoot":"","sources":["../../../src/lib/ai/run-explicit-agent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AAGtC,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAUD,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgB5F"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runExplicitAgentText = runExplicitAgentText;
4
+ const ai_agent_node_1 = require("@multiplayer-app/ai-agent-node");
5
+ const generate_ai_text_1 = require("./generate-ai-text");
6
+ function getExplicitAgentConfig(agentName) {
7
+ const agentConfig = ai_agent_node_1.ConfigStore.getInstance().getAgentConfigByName(agentName);
8
+ if (agentConfig.name === '__default') {
9
+ throw new Error(`Agent not found: ${agentName}`);
10
+ }
11
+ return agentConfig;
12
+ }
13
+ async function runExplicitAgentText(input) {
14
+ var _a;
15
+ const agentConfig = getExplicitAgentConfig(input.agentName);
16
+ const system = input.system
17
+ ? `${agentConfig.systemPrompt}\n\n${input.system}`
18
+ : agentConfig.systemPrompt;
19
+ return (0, generate_ai_text_1.generateAiText)({
20
+ accountId: input.accountId,
21
+ model: (_a = input.model) !== null && _a !== void 0 ? _a : agentConfig.defaultModel,
22
+ system,
23
+ messages: input.messages,
24
+ signal: input.signal,
25
+ temperature: input.temperature,
26
+ maxOutputTokens: input.maxOutputTokens,
27
+ logLabel: input.logLabel,
28
+ });
29
+ }
30
+ //# sourceMappingURL=run-explicit-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-explicit-agent.js","sourceRoot":"","sources":["../../../src/lib/ai/run-explicit-agent.ts"],"names":[],"mappings":";;AA0BA,oDAgBC;AA1CD,kEAA4D;AAG5D,yDAAmD;AAenD,SAAS,sBAAsB,CAAC,SAAiB;IAC/C,MAAM,WAAW,GAAG,2BAAW,CAAC,WAAW,EAAE,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAA;IAC7E,IAAI,WAAW,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAA;IAClD,CAAC;IACD,OAAO,WAAW,CAAA;AACpB,CAAC;AAEM,KAAK,UAAU,oBAAoB,CAAC,KAAgC;;IACzE,MAAM,WAAW,GAAG,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;QACzB,CAAC,CAAC,GAAG,WAAW,CAAC,YAAY,OAAO,KAAK,CAAC,MAAM,EAAE;QAClD,CAAC,CAAC,WAAW,CAAC,YAAY,CAAA;IAE5B,OAAO,IAAA,iCAAc,EAAC;QACpB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,KAAK,EAAE,MAAA,KAAK,CAAC,KAAK,mCAAI,WAAW,CAAC,YAAY;QAC9C,MAAM;QACN,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import pg from 'pg';
2
+ export declare function getNotebookSqlPool(): pg.Pool;
3
+ export declare function closeNotebookSqlPool(): Promise<void>;
4
+ export declare function withNotebookSqlClient<T>(fn: (client: pg.PoolClient) => Promise<T>): Promise<T>;
5
+ //# sourceMappingURL=notebook-sql-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebook-sql-client.d.ts","sourceRoot":"","sources":["../../../src/lib/notebooks/notebook-sql-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AAUnB,wBAAgB,kBAAkB,IAAI,EAAE,CAAC,IAAI,CAK5C;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAK1D;AAED,wBAAsB,qBAAqB,CAAC,CAAC,EAC3C,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,GACxC,OAAO,CAAC,CAAC,CAAC,CAOZ"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getNotebookSqlPool = getNotebookSqlPool;
7
+ exports.closeNotebookSqlPool = closeNotebookSqlPool;
8
+ exports.withNotebookSqlClient = withNotebookSqlClient;
9
+ const pg_1 = __importDefault(require("pg"));
10
+ const DEFAULT_DATABASE_URL = 'postgresql://multiplayer:multiplayer@localhost:5432/multiplayer';
11
+ let pool = null;
12
+ function getConnectionString() {
13
+ var _a;
14
+ return ((_a = process.env.DATABASE_URL) === null || _a === void 0 ? void 0 : _a.trim()) || DEFAULT_DATABASE_URL;
15
+ }
16
+ function getNotebookSqlPool() {
17
+ if (!pool) {
18
+ pool = new pg_1.default.Pool({ connectionString: getConnectionString() });
19
+ }
20
+ return pool;
21
+ }
22
+ async function closeNotebookSqlPool() {
23
+ if (pool) {
24
+ await pool.end();
25
+ pool = null;
26
+ }
27
+ }
28
+ async function withNotebookSqlClient(fn) {
29
+ const client = await getNotebookSqlPool().connect();
30
+ try {
31
+ return await fn(client);
32
+ }
33
+ finally {
34
+ client.release();
35
+ }
36
+ }
37
+ //# sourceMappingURL=notebook-sql-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebook-sql-client.js","sourceRoot":"","sources":["../../../src/lib/notebooks/notebook-sql-client.ts"],"names":[],"mappings":";;;;;AAUA,gDAKC;AAED,oDAKC;AAED,sDASC;AAjCD,4CAAmB;AAEnB,MAAM,oBAAoB,GAAG,iEAAiE,CAAA;AAE9F,IAAI,IAAI,GAAmB,IAAI,CAAA;AAE/B,SAAS,mBAAmB;;IAC1B,OAAO,CAAA,MAAA,OAAO,CAAC,GAAG,CAAC,YAAY,0CAAE,IAAI,EAAE,KAAI,oBAAoB,CAAA;AACjE,CAAC;AAED,SAAgB,kBAAkB;IAChC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,GAAG,IAAI,YAAE,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAA;IACjE,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAEM,KAAK,UAAU,oBAAoB;IACxC,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,IAAI,CAAC,GAAG,EAAE,CAAA;QAChB,IAAI,GAAG,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,qBAAqB,CACzC,EAAyC;IAEzC,MAAM,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC,OAAO,EAAE,CAAA;IACnD,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,MAAM,CAAC,CAAA;IACzB,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,OAAO,EAAE,CAAA;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,16 @@
1
+ export interface SqlTableColumn {
2
+ name: string;
3
+ dataType: string;
4
+ isNullable: boolean;
5
+ defaultValue: string | null;
6
+ isPrimaryKey: boolean;
7
+ ordinalPosition: number;
8
+ }
9
+ export interface SqlTableSchema {
10
+ schema: string;
11
+ name: string;
12
+ columns: SqlTableColumn[];
13
+ }
14
+ export declare function listNotebookSqlTables(): Promise<SqlTableSchema[]>;
15
+ export declare function getNotebookSqlTableSchema(tableName: string): Promise<SqlTableSchema | null>;
16
+ //# sourceMappingURL=notebook-sql-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebook-sql-schema.d.ts","sourceRoot":"","sources":["../../../src/lib/notebooks/notebook-sql-schema.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,YAAY,EAAE,OAAO,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,cAAc,EAAE,CAAA;CAC1B;AAqFD,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CASvE;AAED,wBAAsB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAqDjG"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listNotebookSqlTables = listNotebookSqlTables;
4
+ exports.getNotebookSqlTableSchema = getNotebookSqlTableSchema;
5
+ const notebook_sql_client_1 = require("./notebook-sql-client");
6
+ const LIST_COLUMNS_SQL = `
7
+ SELECT
8
+ c.table_schema,
9
+ c.table_name,
10
+ c.column_name,
11
+ c.data_type,
12
+ c.is_nullable,
13
+ c.column_default,
14
+ c.ordinal_position
15
+ FROM information_schema.columns c
16
+ INNER JOIN information_schema.tables t
17
+ ON t.table_schema = c.table_schema
18
+ AND t.table_name = c.table_name
19
+ WHERE c.table_schema = 'public'
20
+ AND t.table_type = 'BASE TABLE'
21
+ ORDER BY c.table_name, c.ordinal_position
22
+ `;
23
+ const LIST_PRIMARY_KEYS_SQL = `
24
+ SELECT
25
+ tc.table_schema,
26
+ tc.table_name,
27
+ kcu.column_name
28
+ FROM information_schema.table_constraints tc
29
+ INNER JOIN information_schema.key_column_usage kcu
30
+ ON tc.constraint_name = kcu.constraint_name
31
+ AND tc.table_schema = kcu.table_schema
32
+ AND tc.table_name = kcu.table_name
33
+ WHERE tc.constraint_type = 'PRIMARY KEY'
34
+ AND tc.table_schema = 'public'
35
+ `;
36
+ function buildPrimaryKeySet(rows) {
37
+ return new Set(rows.map(row => `${row.table_schema}.${row.table_name}.${row.column_name}`));
38
+ }
39
+ function groupColumnsByTable(columnRows, primaryKeys) {
40
+ const tables = new Map();
41
+ for (const row of columnRows) {
42
+ const key = `${row.table_schema}.${row.table_name}`;
43
+ let table = tables.get(key);
44
+ if (!table) {
45
+ table = {
46
+ schema: row.table_schema,
47
+ name: row.table_name,
48
+ columns: [],
49
+ };
50
+ tables.set(key, table);
51
+ }
52
+ table.columns.push({
53
+ name: row.column_name,
54
+ dataType: row.data_type,
55
+ isNullable: row.is_nullable === 'YES',
56
+ defaultValue: row.column_default,
57
+ isPrimaryKey: primaryKeys.has(`${row.table_schema}.${row.table_name}.${row.column_name}`),
58
+ ordinalPosition: row.ordinal_position,
59
+ });
60
+ }
61
+ return Array.from(tables.values());
62
+ }
63
+ async function listNotebookSqlTables() {
64
+ return (0, notebook_sql_client_1.withNotebookSqlClient)(async (client) => {
65
+ const [columnsResult, primaryKeysResult] = await Promise.all([
66
+ client.query(LIST_COLUMNS_SQL),
67
+ client.query(LIST_PRIMARY_KEYS_SQL),
68
+ ]);
69
+ return groupColumnsByTable(columnsResult.rows, buildPrimaryKeySet(primaryKeysResult.rows));
70
+ });
71
+ }
72
+ async function getNotebookSqlTableSchema(tableName) {
73
+ const trimmed = tableName.trim();
74
+ if (!trimmed) {
75
+ throw new Error('Table name is required');
76
+ }
77
+ return (0, notebook_sql_client_1.withNotebookSqlClient)(async (client) => {
78
+ var _a;
79
+ const columnsResult = await client.query(`
80
+ SELECT
81
+ c.table_schema,
82
+ c.table_name,
83
+ c.column_name,
84
+ c.data_type,
85
+ c.is_nullable,
86
+ c.column_default,
87
+ c.ordinal_position
88
+ FROM information_schema.columns c
89
+ INNER JOIN information_schema.tables t
90
+ ON t.table_schema = c.table_schema
91
+ AND t.table_name = c.table_name
92
+ WHERE c.table_schema = 'public'
93
+ AND t.table_type = 'BASE TABLE'
94
+ AND c.table_name = $1
95
+ ORDER BY c.ordinal_position
96
+ `, [trimmed]);
97
+ if (columnsResult.rows.length === 0) {
98
+ return null;
99
+ }
100
+ const primaryKeysResult = await client.query(`
101
+ SELECT
102
+ tc.table_schema,
103
+ tc.table_name,
104
+ kcu.column_name
105
+ FROM information_schema.table_constraints tc
106
+ INNER JOIN information_schema.key_column_usage kcu
107
+ ON tc.constraint_name = kcu.constraint_name
108
+ AND tc.table_schema = kcu.table_schema
109
+ AND tc.table_name = kcu.table_name
110
+ WHERE tc.constraint_type = 'PRIMARY KEY'
111
+ AND tc.table_schema = 'public'
112
+ AND tc.table_name = $1
113
+ `, [trimmed]);
114
+ return (_a = groupColumnsByTable(columnsResult.rows, buildPrimaryKeySet(primaryKeysResult.rows))[0]) !== null && _a !== void 0 ? _a : null;
115
+ });
116
+ }
117
+ //# sourceMappingURL=notebook-sql-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebook-sql-schema.js","sourceRoot":"","sources":["../../../src/lib/notebooks/notebook-sql-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface SqlQueryResult {
2
+ columns: string[];
3
+ rows: Record<string, unknown>[];
4
+ rowCount: number;
5
+ durationMs: number;
6
+ }
7
+ export declare function executeNotebookSqlQuery(query: string): Promise<SqlQueryResult>;
8
+ export { closeNotebookSqlPool } from './notebook-sql-client';
9
+ //# sourceMappingURL=notebook-sql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebook-sql.d.ts","sourceRoot":"","sources":["../../../src/lib/notebooks/notebook-sql.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CACnB;AAYD,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAsBpF;AAED,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.closeNotebookSqlPool = void 0;
4
+ exports.executeNotebookSqlQuery = executeNotebookSqlQuery;
5
+ const notebook_sql_client_1 = require("./notebook-sql-client");
6
+ function rowsToResult(rows, rowCount, durationMs) {
7
+ const columns = rows.length > 0 ? Object.keys(rows[0]) : [];
8
+ return {
9
+ columns,
10
+ rows,
11
+ rowCount,
12
+ durationMs,
13
+ };
14
+ }
15
+ async function executeNotebookSqlQuery(query) {
16
+ const trimmed = query.trim();
17
+ if (!trimmed) {
18
+ throw new Error('Query is empty');
19
+ }
20
+ const start = performance.now();
21
+ try {
22
+ return await (0, notebook_sql_client_1.withNotebookSqlClient)(async (client) => {
23
+ var _a;
24
+ const result = await client.query(trimmed);
25
+ const durationMs = Math.round(performance.now() - start);
26
+ return rowsToResult(result.rows, (_a = result.rowCount) !== null && _a !== void 0 ? _a : result.rows.length, durationMs);
27
+ });
28
+ }
29
+ catch (error) {
30
+ const message = error instanceof Error ? error.message : String(error);
31
+ throw new Error(message);
32
+ }
33
+ }
34
+ var notebook_sql_client_2 = require("./notebook-sql-client");
35
+ Object.defineProperty(exports, "closeNotebookSqlPool", { enumerable: true, get: function () { return notebook_sql_client_2.closeNotebookSqlPool; } });
36
+ //# sourceMappingURL=notebook-sql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebook-sql.js","sourceRoot":"","sources":["../../../src/lib/notebooks/notebook-sql.ts"],"names":[],"mappings":";;;AAmBA,0DAsBC;AAzCD,+DAA6D;AAS7D,SAAS,YAAY,CAAC,IAA+B,EAAE,QAAgB,EAAE,UAAkB;IACzF,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC3D,OAAO;QACL,OAAO;QACP,IAAI;QACJ,QAAQ;QACR,UAAU;KACX,CAAA;AACH,CAAC;AAEM,KAAK,UAAU,uBAAuB,CAAC,KAAa;IACzD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;IACnC,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;IAE/B,IAAI,CAAC;QACH,OAAO,MAAM,IAAA,2CAAqB,EAAC,KAAK,EAAC,MAAM,EAAC,EAAE;;YAChD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAA;YACxD,OAAO,YAAY,CACjB,MAAM,CAAC,IAAiC,EACxC,MAAA,MAAM,CAAC,QAAQ,mCAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EACrC,UAAU,CACX,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACtE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;IAC1B,CAAC;AACH,CAAC;AAED,6DAA4D;AAAnD,2HAAA,oBAAoB,OAAA"}
@@ -0,0 +1,3 @@
1
+ import type { HashlineReplaceEdit } from './parse-hashline-diff';
2
+ export declare function applyHashlineEditsToContent(content: string, edits: HashlineReplaceEdit[]): string;
3
+ //# sourceMappingURL=apply-hashline-edits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-hashline-edits.d.ts","sourceRoot":"","sources":["../../../src/lib/session-artifacts/apply-hashline-edits.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAEhE,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAwBjG"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyHashlineEditsToContent = applyHashlineEditsToContent;
4
+ const hashline_tag_1 = require("./hashline-tag");
5
+ function applyHashlineEditsToContent(content, edits) {
6
+ if (edits.length === 0) {
7
+ throw new Error('At least one hashline edit is required');
8
+ }
9
+ const baseDocument = (0, hashline_tag_1.buildHashlineDocument)(content);
10
+ const { trailingNewline } = baseDocument;
11
+ let lineTexts = baseDocument.lines.map((line) => line.text);
12
+ const resolveStartIndex = (edit) => {
13
+ const snapshot = (0, hashline_tag_1.buildHashlineDocument)((0, hashline_tag_1.joinContentLines)(lineTexts, trailingNewline));
14
+ return (0, hashline_tag_1.resolveHashlineRange)(snapshot, edit.startTag, edit.endTag).startIndex;
15
+ };
16
+ const sortedEdits = [...edits].sort((a, b) => resolveStartIndex(b) - resolveStartIndex(a));
17
+ for (const edit of sortedEdits) {
18
+ const snapshot = (0, hashline_tag_1.buildHashlineDocument)((0, hashline_tag_1.joinContentLines)(lineTexts, trailingNewline));
19
+ const { startIndex, endIndex } = (0, hashline_tag_1.resolveHashlineRange)(snapshot, edit.startTag, edit.endTag);
20
+ const replacementLines = (0, hashline_tag_1.splitContentLines)(edit.content).lines;
21
+ lineTexts.splice(startIndex, endIndex - startIndex + 1, ...replacementLines);
22
+ }
23
+ return (0, hashline_tag_1.joinContentLines)(lineTexts, trailingNewline);
24
+ }
25
+ //# sourceMappingURL=apply-hashline-edits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-hashline-edits.js","sourceRoot":"","sources":["../../../src/lib/session-artifacts/apply-hashline-edits.ts"],"names":[],"mappings":";;AAQA,kEAwBC;AAhCD,iDAKuB;AAGvB,SAAgB,2BAA2B,CAAC,OAAe,EAAE,KAA4B;IACvF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAC3D,CAAC;IAED,MAAM,YAAY,GAAG,IAAA,oCAAqB,EAAC,OAAO,CAAC,CAAA;IACnD,MAAM,EAAE,eAAe,EAAE,GAAG,YAAY,CAAA;IACxC,IAAI,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAE3D,MAAM,iBAAiB,GAAG,CAAC,IAAyB,EAAU,EAAE;QAC9D,MAAM,QAAQ,GAAG,IAAA,oCAAqB,EAAC,IAAA,+BAAgB,EAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAA;QACpF,OAAO,IAAA,mCAAoB,EAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,CAAA;IAC9E,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAA;IAE1F,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,IAAA,oCAAqB,EAAC,IAAA,+BAAgB,EAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAA;QACpF,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAA,mCAAoB,EAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAC3F,MAAM,gBAAgB,GAAG,IAAA,gCAAiB,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAA;QAC9D,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,GAAG,UAAU,GAAG,CAAC,EAAE,GAAG,gBAAgB,CAAC,CAAA;IAC9E,CAAC;IAED,OAAO,IAAA,+BAAgB,EAAC,SAAS,EAAE,eAAe,CAAC,CAAA;AACrD,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface ArtifactTextEdit {
2
+ /** Exact substring in the current document (must occur exactly once). */
3
+ search: string;
4
+ /** Replacement text (empty string deletes the match). */
5
+ replace: string;
6
+ }
7
+ export declare function applyArtifactTextEditsToContent(content: string, edits: ArtifactTextEdit[]): string;
8
+ //# sourceMappingURL=artifact-text-edit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-text-edit.d.ts","sourceRoot":"","sources":["../../../src/lib/session-artifacts/artifact-text-edit.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAA;IACd,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,gBAAgB,EAAE,GACxB,MAAM,CAuBR"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyArtifactTextEditsToContent = applyArtifactTextEditsToContent;
4
+ function applyArtifactTextEditsToContent(content, edits) {
5
+ let current = content;
6
+ for (let index = 0; index < edits.length; index++) {
7
+ const edit = edits[index];
8
+ if (!edit.search.length) {
9
+ throw new Error(`Edit ${index + 1}: search must not be empty`);
10
+ }
11
+ const first = current.indexOf(edit.search);
12
+ if (first === -1) {
13
+ throw new Error(`Edit ${index + 1}: search text not found in document`);
14
+ }
15
+ const second = current.indexOf(edit.search, first + edit.search.length);
16
+ if (second !== -1) {
17
+ throw new Error(`Edit ${index + 1}: search text is ambiguous (multiple matches)`);
18
+ }
19
+ current = current.slice(0, first) + edit.replace + current.slice(first + edit.search.length);
20
+ }
21
+ return current;
22
+ }
23
+ //# sourceMappingURL=artifact-text-edit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-text-edit.js","sourceRoot":"","sources":["../../../src/lib/session-artifacts/artifact-text-edit.ts"],"names":[],"mappings":";;AAOA,0EA0BC;AA1BD,SAAgB,+BAA+B,CAC7C,OAAe,EACf,KAAyB;IAEzB,IAAI,OAAO,GAAG,OAAO,CAAA;IAErB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,GAAG,CAAC,4BAA4B,CAAC,CAAA;QAChE,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC1C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,GAAG,CAAC,qCAAqC,CAAC,CAAA;QACzE,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACvE,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,GAAG,CAAC,+CAA+C,CAAC,CAAA;QACnF,CAAC;QAED,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC9F,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -0,0 +1,33 @@
1
+ export interface HashlineLine {
2
+ /** 1-based line number in the current document snapshot */
3
+ lineNumber: number;
4
+ text: string;
5
+ /** e.g. 45:d4 — line number + content fingerprint */
6
+ tag: string;
7
+ }
8
+ export declare function hashlineFingerprint(text: string): string;
9
+ export declare function buildLineTag(lineNumber: number, text: string): string;
10
+ export declare function parseLineTag(tag: string): {
11
+ lineNumber: number;
12
+ hash: string;
13
+ };
14
+ export declare function parseTagRange(range: string): {
15
+ startTag: string;
16
+ endTag: string;
17
+ };
18
+ export declare function splitContentLines(content: string): {
19
+ lines: string[];
20
+ trailingNewline: boolean;
21
+ };
22
+ export declare function joinContentLines(lines: string[], trailingNewline: boolean): string;
23
+ export declare function buildHashlineDocument(content: string): {
24
+ lines: HashlineLine[];
25
+ trailingNewline: boolean;
26
+ };
27
+ export declare function resolveHashlineRange(document: {
28
+ lines: HashlineLine[];
29
+ }, startTag: string, endTag: string): {
30
+ startIndex: number;
31
+ endIndex: number;
32
+ };
33
+ //# sourceMappingURL=hashline-tag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hashline-tag.d.ts","sourceRoot":"","sources":["../../../src/lib/session-artifacts/hashline-tag.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAM9E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAcjF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,CAYhG;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,OAAO,GAAG,MAAM,CAKlF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG;IACtD,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,eAAe,EAAE,OAAO,CAAA;CACzB,CAOA;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE;IAAE,KAAK,EAAE,YAAY,EAAE,CAAA;CAAE,EACnC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAiB1C"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hashlineFingerprint = hashlineFingerprint;
4
+ exports.buildLineTag = buildLineTag;
5
+ exports.parseLineTag = parseLineTag;
6
+ exports.parseTagRange = parseTagRange;
7
+ exports.splitContentLines = splitContentLines;
8
+ exports.joinContentLines = joinContentLines;
9
+ exports.buildHashlineDocument = buildHashlineDocument;
10
+ exports.resolveHashlineRange = resolveHashlineRange;
11
+ const node_crypto_1 = require("node:crypto");
12
+ function hashlineFingerprint(text) {
13
+ return (0, node_crypto_1.createHash)('sha256').update(text, 'utf8').digest('hex').slice(0, 2);
14
+ }
15
+ function buildLineTag(lineNumber, text) {
16
+ return `${lineNumber}:${hashlineFingerprint(text)}`;
17
+ }
18
+ function parseLineTag(tag) {
19
+ const match = /^(\d+):([0-9a-f]+)$/i.exec(tag.trim());
20
+ if (!match) {
21
+ throw new Error(`Invalid line tag: ${tag}`);
22
+ }
23
+ return { lineNumber: Number(match[1]), hash: match[2].toLowerCase() };
24
+ }
25
+ function parseTagRange(range) {
26
+ const trimmed = range.trim();
27
+ const separator = trimmed.indexOf('..');
28
+ if (separator === -1) {
29
+ const tag = trimmed;
30
+ return { startTag: tag, endTag: tag };
31
+ }
32
+ const startTag = trimmed.slice(0, separator).trim();
33
+ const endTag = trimmed.slice(separator + 2).trim();
34
+ if (!startTag || !endTag) {
35
+ throw new Error(`Invalid tag range: ${range}`);
36
+ }
37
+ return { startTag, endTag };
38
+ }
39
+ function splitContentLines(content) {
40
+ if (content.length === 0) {
41
+ return { lines: [], trailingNewline: false };
42
+ }
43
+ const trailingNewline = content.endsWith('\n');
44
+ const body = trailingNewline ? content.slice(0, -1) : content;
45
+ if (body.length === 0) {
46
+ return { lines: [], trailingNewline };
47
+ }
48
+ return { lines: body.split('\n'), trailingNewline };
49
+ }
50
+ function joinContentLines(lines, trailingNewline) {
51
+ if (lines.length === 0) {
52
+ return trailingNewline ? '\n' : '';
53
+ }
54
+ return lines.join('\n') + (trailingNewline ? '\n' : '');
55
+ }
56
+ function buildHashlineDocument(content) {
57
+ const { lines: rawLines, trailingNewline } = splitContentLines(content);
58
+ const lines = rawLines.map((text, index) => {
59
+ const lineNumber = index + 1;
60
+ return { lineNumber, text, tag: buildLineTag(lineNumber, text) };
61
+ });
62
+ return { lines, trailingNewline };
63
+ }
64
+ function resolveHashlineRange(document, startTag, endTag) {
65
+ const normalizedStart = startTag.trim();
66
+ const normalizedEnd = endTag.trim();
67
+ const startIndex = document.lines.findIndex((line) => line.tag === normalizedStart);
68
+ const endIndex = document.lines.findIndex((line) => line.tag === normalizedEnd);
69
+ if (startIndex === -1) {
70
+ throw new Error(`Start tag not found: ${normalizedStart}`);
71
+ }
72
+ if (endIndex === -1) {
73
+ throw new Error(`End tag not found: ${normalizedEnd}`);
74
+ }
75
+ if (startIndex > endIndex) {
76
+ throw new Error(`Invalid tag range: ${normalizedStart}..${normalizedEnd}`);
77
+ }
78
+ return { startIndex, endIndex };
79
+ }
80
+ //# sourceMappingURL=hashline-tag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hashline-tag.js","sourceRoot":"","sources":["../../../src/lib/session-artifacts/hashline-tag.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function buildPreviewErrorReporterScript(sessionId: string, previewPath: string): string;
2
+ export declare function injectPreviewErrorReporter(html: string, sessionId: string, previewPath: string): string;
3
+ //# sourceMappingURL=inject-preview-error-reporter.d.ts.map