langwatch 0.3.0-prerelease.2 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/dist/add-LBBS4I3H.js +114 -0
  2. package/dist/add-LBBS4I3H.js.map +1 -0
  3. package/dist/add-RD3ZKFAT.mjs +114 -0
  4. package/dist/add-RD3ZKFAT.mjs.map +1 -0
  5. package/dist/chunk-2JU376G7.js +242 -0
  6. package/dist/chunk-2JU376G7.js.map +1 -0
  7. package/dist/chunk-2ODBGSBI.js +4 -0
  8. package/dist/{chunk-G3AUABT7.js.map → chunk-2ODBGSBI.js.map} +1 -1
  9. package/dist/chunk-3GKPQB4R.mjs +242 -0
  10. package/dist/chunk-3GKPQB4R.mjs.map +1 -0
  11. package/dist/chunk-4NRLVT2U.mjs +35 -0
  12. package/dist/chunk-4NRLVT2U.mjs.map +1 -0
  13. package/dist/{chunk-SVJ7SCGB.js → chunk-52GXX3MA.js} +33 -31
  14. package/dist/chunk-52GXX3MA.js.map +1 -0
  15. package/dist/chunk-5NC5ILKA.js +94 -0
  16. package/dist/chunk-5NC5ILKA.js.map +1 -0
  17. package/dist/{chunk-WM2GRSRW.js → chunk-6I4EA43Y.js} +2 -2
  18. package/dist/chunk-6I4EA43Y.js.map +1 -0
  19. package/dist/chunk-DHJKJVY7.mjs +20 -0
  20. package/dist/chunk-DHJKJVY7.mjs.map +1 -0
  21. package/dist/{chunk-VJSOCNPA.js → chunk-DTEKFQ4U.js} +6 -28
  22. package/dist/chunk-DTEKFQ4U.js.map +1 -0
  23. package/dist/chunk-E7UE2MPD.mjs +93 -0
  24. package/dist/chunk-E7UE2MPD.mjs.map +1 -0
  25. package/dist/chunk-F6E4XQQU.js +20 -0
  26. package/dist/chunk-F6E4XQQU.js.map +1 -0
  27. package/dist/chunk-FJLK5CFL.js +37 -0
  28. package/dist/chunk-FJLK5CFL.js.map +1 -0
  29. package/dist/{chunk-Z5J5UI5E.mjs → chunk-GJSEBQXF.mjs} +139 -107
  30. package/dist/chunk-GJSEBQXF.mjs.map +1 -0
  31. package/dist/chunk-HA3LI5IK.js +35 -0
  32. package/dist/chunk-HA3LI5IK.js.map +1 -0
  33. package/dist/chunk-HJU67C7H.js +93 -0
  34. package/dist/chunk-HJU67C7H.js.map +1 -0
  35. package/dist/{chunk-PMBEK6YE.mjs → chunk-J7ICRUU4.mjs} +5 -3
  36. package/dist/{chunk-PMBEK6YE.mjs.map → chunk-J7ICRUU4.mjs.map} +1 -1
  37. package/dist/{chunk-HPC6Z7J4.js → chunk-PWZBLTHR.js} +3 -3
  38. package/dist/{chunk-HPC6Z7J4.js.map → chunk-PWZBLTHR.js.map} +1 -1
  39. package/dist/chunk-SMXXAVMB.js +100 -0
  40. package/dist/chunk-SMXXAVMB.js.map +1 -0
  41. package/dist/{chunk-CSC3CMIT.mjs → chunk-STV4ZVNA.mjs} +2 -2
  42. package/dist/chunk-T5AZMMVS.mjs +94 -0
  43. package/dist/chunk-T5AZMMVS.mjs.map +1 -0
  44. package/dist/{chunk-4BZATFKJ.mjs → chunk-UU33HCCZ.mjs} +4 -26
  45. package/dist/{chunk-4BZATFKJ.mjs.map → chunk-UU33HCCZ.mjs.map} +1 -1
  46. package/dist/{chunk-PTJ6AAI7.js → chunk-VGHLQXKB.js} +138 -106
  47. package/dist/chunk-VGHLQXKB.js.map +1 -0
  48. package/dist/chunk-W5ZEP3CI.mjs +100 -0
  49. package/dist/chunk-W5ZEP3CI.mjs.map +1 -0
  50. package/dist/chunk-Y666BJA5.mjs +4 -0
  51. package/dist/{chunk-REUCVT7A.mjs → chunk-YFUZF7JM.mjs} +2 -2
  52. package/dist/chunk-YFUZF7JM.mjs.map +1 -0
  53. package/dist/chunk-YN4436PK.mjs +37 -0
  54. package/dist/chunk-YN4436PK.mjs.map +1 -0
  55. package/dist/cli/index.d.mts +1 -0
  56. package/dist/cli/index.d.ts +1 -0
  57. package/dist/cli/index.js +106 -0
  58. package/dist/cli/index.js.map +1 -0
  59. package/dist/cli/index.mjs +106 -0
  60. package/dist/cli/index.mjs.map +1 -0
  61. package/dist/client-browser.js +12 -10
  62. package/dist/client-browser.js.map +1 -1
  63. package/dist/client-browser.mjs +5 -3
  64. package/dist/client-browser.mjs.map +1 -1
  65. package/dist/client-node.js +11 -9
  66. package/dist/client-node.js.map +1 -1
  67. package/dist/client-node.mjs +7 -5
  68. package/dist/client-node.mjs.map +1 -1
  69. package/dist/create-G5MTGOOH.js +70 -0
  70. package/dist/create-G5MTGOOH.js.map +1 -0
  71. package/dist/create-QUZYBMQB.mjs +70 -0
  72. package/dist/create-QUZYBMQB.mjs.map +1 -0
  73. package/dist/evaluation/index.js +5 -4
  74. package/dist/evaluation/index.js.map +1 -1
  75. package/dist/evaluation/index.mjs +4 -3
  76. package/dist/index.d.mts +2 -2
  77. package/dist/index.d.ts +2 -2
  78. package/dist/index.js +10 -7
  79. package/dist/index.js.map +1 -1
  80. package/dist/index.mjs +9 -6
  81. package/dist/init-H67RW22E.mjs +16 -0
  82. package/dist/init-H67RW22E.mjs.map +1 -0
  83. package/dist/init-XU2JFY6N.js +16 -0
  84. package/dist/init-XU2JFY6N.js.map +1 -0
  85. package/dist/list-7NPSX2E4.mjs +136 -0
  86. package/dist/list-7NPSX2E4.mjs.map +1 -0
  87. package/dist/list-ZXFLAF52.js +136 -0
  88. package/dist/list-ZXFLAF52.js.map +1 -0
  89. package/dist/login-76NQIHKR.js +110 -0
  90. package/dist/login-76NQIHKR.js.map +1 -0
  91. package/dist/login-EK4WVOI2.mjs +110 -0
  92. package/dist/login-EK4WVOI2.mjs.map +1 -0
  93. package/dist/observability/index.d.mts +3 -3
  94. package/dist/observability/index.d.ts +3 -3
  95. package/dist/observability/index.js +5 -4
  96. package/dist/observability/index.js.map +1 -1
  97. package/dist/observability/index.mjs +4 -3
  98. package/dist/observability/instrumentation/langchain/index.d.mts +2 -2
  99. package/dist/observability/instrumentation/langchain/index.d.ts +2 -2
  100. package/dist/observability/instrumentation/langchain/index.js +29 -27
  101. package/dist/observability/instrumentation/langchain/index.js.map +1 -1
  102. package/dist/observability/instrumentation/langchain/index.mjs +5 -3
  103. package/dist/observability/instrumentation/langchain/index.mjs.map +1 -1
  104. package/dist/prompt/index.d.mts +2 -2
  105. package/dist/prompt/index.d.ts +2 -2
  106. package/dist/prompt/index.js +8 -4
  107. package/dist/prompt/index.js.map +1 -1
  108. package/dist/prompt/index.mjs +10 -6
  109. package/dist/{prompt-BXJWdbQp.d.mts → prompt-D-jpMrLS.d.mts} +245 -0
  110. package/dist/{prompt-BXJWdbQp.d.ts → prompt-D-jpMrLS.d.ts} +245 -0
  111. package/dist/remove-SDJYEPAY.mjs +106 -0
  112. package/dist/remove-SDJYEPAY.mjs.map +1 -0
  113. package/dist/remove-XBNGIVMR.js +106 -0
  114. package/dist/remove-XBNGIVMR.js.map +1 -0
  115. package/dist/sync-EISKGPTL.js +403 -0
  116. package/dist/sync-EISKGPTL.js.map +1 -0
  117. package/dist/sync-ST2IWXSB.mjs +403 -0
  118. package/dist/sync-ST2IWXSB.mjs.map +1 -0
  119. package/dist/{trace-G2312klE.d.ts → trace-CqaKo0kZ.d.ts} +1 -1
  120. package/dist/{trace-D-bZOuqb.d.mts → trace-DtVc5GhF.d.mts} +1 -1
  121. package/package.json +13 -2
  122. package/dist/chunk-G3AUABT7.js +0 -4
  123. package/dist/chunk-OM7VY3XT.mjs +0 -4
  124. package/dist/chunk-PTJ6AAI7.js.map +0 -1
  125. package/dist/chunk-REUCVT7A.mjs.map +0 -1
  126. package/dist/chunk-SVJ7SCGB.js.map +0 -1
  127. package/dist/chunk-VJSOCNPA.js.map +0 -1
  128. package/dist/chunk-WM2GRSRW.js.map +0 -1
  129. package/dist/chunk-Z5J5UI5E.mjs.map +0 -1
  130. /package/dist/{chunk-CSC3CMIT.mjs.map → chunk-STV4ZVNA.mjs.map} +0 -0
  131. /package/dist/{chunk-OM7VY3XT.mjs.map → chunk-Y666BJA5.mjs.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node
@@ -0,0 +1,106 @@
1
+ #!/usr/bin/env node
2
+ "use strict"; function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }
3
+
4
+ var _chunkHA3LI5IKjs = require('../chunk-HA3LI5IK.js');
5
+ require('../chunk-FJLK5CFL.js');
6
+
7
+ // src/cli/index.ts
8
+ var _dotenv = require('dotenv');
9
+ var _commander = require('commander');
10
+ _dotenv.config.call(void 0, );
11
+ var addCommand = async (name, options) => {
12
+ const { addCommand: addCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../add-LBBS4I3H.js")));
13
+ return addCommandImpl(name, options);
14
+ };
15
+ var removeCommand = async (name) => {
16
+ const { removeCommand: removeCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../remove-XBNGIVMR.js")));
17
+ return removeCommandImpl(name);
18
+ };
19
+ var initCommand = async () => {
20
+ const { initCommand: initCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../init-XU2JFY6N.js")));
21
+ return initCommandImpl();
22
+ };
23
+ var loginCommand = async () => {
24
+ const { loginCommand: loginCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../login-76NQIHKR.js")));
25
+ return loginCommandImpl();
26
+ };
27
+ var listCommand = async () => {
28
+ const { listCommand: listCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../list-ZXFLAF52.js")));
29
+ return listCommandImpl();
30
+ };
31
+ var syncCommand = async () => {
32
+ const { syncCommand: syncCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../sync-EISKGPTL.js")));
33
+ return syncCommandImpl();
34
+ };
35
+ var createCommand = async (name, options) => {
36
+ const { createCommand: createCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../create-G5MTGOOH.js")));
37
+ return createCommandImpl(name, options);
38
+ };
39
+ var program = new (0, _commander.Command)();
40
+ program.name("langwatch").description("LangWatch CLI - The npm of prompts").configureHelp({
41
+ showGlobalOptions: true
42
+ }).showHelpAfterError().showSuggestionAfterError();
43
+ program.command("login").description("Login to LangWatch and save API key").action(async () => {
44
+ try {
45
+ await loginCommand();
46
+ } catch (error) {
47
+ console.error(`Error: ${error instanceof Error ? error.message : "Unknown error"}`);
48
+ process.exit(1);
49
+ }
50
+ });
51
+ var promptCmd = program.command("prompt").description("Manage prompt dependencies");
52
+ promptCmd.command("init").description("Initialize a new prompts project").action(async () => {
53
+ try {
54
+ await initCommand();
55
+ } catch (error) {
56
+ console.error(`Error: ${error instanceof Error ? error.message : "Unknown error"}`);
57
+ process.exit(1);
58
+ }
59
+ });
60
+ promptCmd.command("create <name>").description("Create a new prompt YAML file with default content").action(async (name) => {
61
+ try {
62
+ await createCommand(name, {});
63
+ } catch (error) {
64
+ console.error(`Error: ${error instanceof Error ? error.message : "Unknown error"}`);
65
+ process.exit(1);
66
+ }
67
+ });
68
+ promptCmd.command("add <spec> [localFile]").description("Add a prompt dependency (e.g., 'agent/foo', 'agent/bar@5') or local file").action(async (spec, localFile) => {
69
+ try {
70
+ if (localFile) {
71
+ await addCommand(spec, { localFile });
72
+ } else {
73
+ const { name, version } = _chunkHA3LI5IKjs.parsePromptSpec.call(void 0, spec);
74
+ await addCommand(name, { version });
75
+ }
76
+ } catch (error) {
77
+ console.error(`Error: ${error instanceof Error ? error.message : "Unknown error"}`);
78
+ process.exit(1);
79
+ }
80
+ });
81
+ promptCmd.command("remove <name>").description("Remove a prompt dependency").action(async (name) => {
82
+ try {
83
+ await removeCommand(name);
84
+ } catch (error) {
85
+ console.error(`Error: ${error instanceof Error ? error.message : "Unknown error"}`);
86
+ process.exit(1);
87
+ }
88
+ });
89
+ promptCmd.command("list").description("List all available prompts on the server").action(async () => {
90
+ try {
91
+ await listCommand();
92
+ } catch (error) {
93
+ console.error(`Error: ${error instanceof Error ? error.message : "Unknown error"}`);
94
+ process.exit(1);
95
+ }
96
+ });
97
+ promptCmd.command("sync").description("Sync prompts - fetch remote and push local").action(async () => {
98
+ try {
99
+ await syncCommand();
100
+ } catch (error) {
101
+ console.error(`Error: ${error instanceof Error ? error.message : "Unknown error"}`);
102
+ process.exit(1);
103
+ }
104
+ });
105
+ program.parse(process.argv);
106
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/cli/index.js","../../src/cli/index.ts"],"names":[],"mappings":"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","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/cli/index.js","sourcesContent":[null,"#!/usr/bin/env node\n\n// Load environment variables BEFORE any other imports\nimport { config } from \"dotenv\";\nconfig();\n\nimport { Command } from \"commander\";\nimport { parsePromptSpec } from \"./types\";\n\n// Import commands with proper async handling\nconst addCommand = async (name: string, options: { version?: string; localFile?: string }): Promise<void> => {\n const { addCommand: addCommandImpl } = await import(\"./commands/add.js\");\n return addCommandImpl(name, options);\n};\n\nconst removeCommand = async (name: string): Promise<void> => {\n const { removeCommand: removeCommandImpl } = await import(\"./commands/remove.js\");\n return removeCommandImpl(name);\n};\n\nconst initCommand = async (): Promise<void> => {\n const { initCommand: initCommandImpl } = await import(\"./commands/init.js\");\n return initCommandImpl();\n};\n\nconst loginCommand = async (): Promise<void> => {\n const { loginCommand: loginCommandImpl } = await import(\"./commands/login.js\");\n return loginCommandImpl();\n};\n\nconst listCommand = async (): Promise<void> => {\n const { listCommand: listCommandImpl } = await import(\"./commands/list.js\");\n return listCommandImpl();\n};\n\nconst syncCommand = async (): Promise<void> => {\n const { syncCommand: syncCommandImpl } = await import(\"./commands/sync.js\");\n return syncCommandImpl();\n};\n\nconst createCommand = async (name: string, options: Record<string, unknown>): Promise<void> => {\n const { createCommand: createCommandImpl } = await import(\"./commands/create.js\");\n return createCommandImpl(name, options);\n};\n\nconst program = new Command();\n\nprogram\n .name(\"langwatch\")\n .description(\"LangWatch CLI - The npm of prompts\")\n .configureHelp({\n showGlobalOptions: true,\n })\n .showHelpAfterError()\n .showSuggestionAfterError();\n\n// Top-level commands\nprogram\n .command(\"login\")\n .description(\"Login to LangWatch and save API key\")\n .action(async () => {\n try {\n await loginCommand();\n } catch (error) {\n console.error(`Error: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n process.exit(1);\n }\n });\n\n// Add prompt command group\nconst promptCmd = program\n .command(\"prompt\")\n .description(\"Manage prompt dependencies\");\n\npromptCmd\n .command(\"init\")\n .description(\"Initialize a new prompts project\")\n .action(async () => {\n try {\n await initCommand();\n } catch (error) {\n console.error(`Error: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n process.exit(1);\n }\n });\n\npromptCmd\n .command(\"create <name>\")\n .description(\"Create a new prompt YAML file with default content\")\n .action(async (name: string) => {\n try {\n await createCommand(name, {});\n } catch (error) {\n console.error(`Error: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n process.exit(1);\n }\n });\n\npromptCmd\n .command(\"add <spec> [localFile]\")\n .description(\"Add a prompt dependency (e.g., 'agent/foo', 'agent/bar@5') or local file\")\n .action(async (spec: string, localFile?: string) => {\n try {\n if (localFile) {\n await addCommand(spec, { localFile });\n } else {\n const { name, version } = parsePromptSpec(spec);\n await addCommand(name, { version });\n }\n } catch (error) {\n console.error(`Error: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n process.exit(1);\n }\n });\n\npromptCmd\n .command(\"remove <name>\")\n .description(\"Remove a prompt dependency\")\n .action(async (name: string) => {\n try {\n await removeCommand(name);\n } catch (error) {\n console.error(`Error: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n process.exit(1);\n }\n });\n\npromptCmd\n .command(\"list\")\n .description(\"List all available prompts on the server\")\n .action(async () => {\n try {\n await listCommand();\n } catch (error) {\n console.error(`Error: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n process.exit(1);\n }\n });\n\npromptCmd\n .command(\"sync\")\n .description(\"Sync prompts - fetch remote and push local\")\n .action(async () => {\n try {\n await syncCommand();\n } catch (error) {\n console.error(`Error: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n process.exit(1);\n }\n });\n\nprogram.parse(process.argv);"]}
@@ -0,0 +1,106 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ parsePromptSpec
4
+ } from "../chunk-4NRLVT2U.mjs";
5
+ import "../chunk-YN4436PK.mjs";
6
+
7
+ // src/cli/index.ts
8
+ import { config } from "dotenv";
9
+ import { Command } from "commander";
10
+ config();
11
+ var addCommand = async (name, options) => {
12
+ const { addCommand: addCommandImpl } = await import("../add-RD3ZKFAT.mjs");
13
+ return addCommandImpl(name, options);
14
+ };
15
+ var removeCommand = async (name) => {
16
+ const { removeCommand: removeCommandImpl } = await import("../remove-SDJYEPAY.mjs");
17
+ return removeCommandImpl(name);
18
+ };
19
+ var initCommand = async () => {
20
+ const { initCommand: initCommandImpl } = await import("../init-H67RW22E.mjs");
21
+ return initCommandImpl();
22
+ };
23
+ var loginCommand = async () => {
24
+ const { loginCommand: loginCommandImpl } = await import("../login-EK4WVOI2.mjs");
25
+ return loginCommandImpl();
26
+ };
27
+ var listCommand = async () => {
28
+ const { listCommand: listCommandImpl } = await import("../list-7NPSX2E4.mjs");
29
+ return listCommandImpl();
30
+ };
31
+ var syncCommand = async () => {
32
+ const { syncCommand: syncCommandImpl } = await import("../sync-ST2IWXSB.mjs");
33
+ return syncCommandImpl();
34
+ };
35
+ var createCommand = async (name, options) => {
36
+ const { createCommand: createCommandImpl } = await import("../create-QUZYBMQB.mjs");
37
+ return createCommandImpl(name, options);
38
+ };
39
+ var program = new Command();
40
+ program.name("langwatch").description("LangWatch CLI - The npm of prompts").configureHelp({
41
+ showGlobalOptions: true
42
+ }).showHelpAfterError().showSuggestionAfterError();
43
+ program.command("login").description("Login to LangWatch and save API key").action(async () => {
44
+ try {
45
+ await loginCommand();
46
+ } catch (error) {
47
+ console.error(`Error: ${error instanceof Error ? error.message : "Unknown error"}`);
48
+ process.exit(1);
49
+ }
50
+ });
51
+ var promptCmd = program.command("prompt").description("Manage prompt dependencies");
52
+ promptCmd.command("init").description("Initialize a new prompts project").action(async () => {
53
+ try {
54
+ await initCommand();
55
+ } catch (error) {
56
+ console.error(`Error: ${error instanceof Error ? error.message : "Unknown error"}`);
57
+ process.exit(1);
58
+ }
59
+ });
60
+ promptCmd.command("create <name>").description("Create a new prompt YAML file with default content").action(async (name) => {
61
+ try {
62
+ await createCommand(name, {});
63
+ } catch (error) {
64
+ console.error(`Error: ${error instanceof Error ? error.message : "Unknown error"}`);
65
+ process.exit(1);
66
+ }
67
+ });
68
+ promptCmd.command("add <spec> [localFile]").description("Add a prompt dependency (e.g., 'agent/foo', 'agent/bar@5') or local file").action(async (spec, localFile) => {
69
+ try {
70
+ if (localFile) {
71
+ await addCommand(spec, { localFile });
72
+ } else {
73
+ const { name, version } = parsePromptSpec(spec);
74
+ await addCommand(name, { version });
75
+ }
76
+ } catch (error) {
77
+ console.error(`Error: ${error instanceof Error ? error.message : "Unknown error"}`);
78
+ process.exit(1);
79
+ }
80
+ });
81
+ promptCmd.command("remove <name>").description("Remove a prompt dependency").action(async (name) => {
82
+ try {
83
+ await removeCommand(name);
84
+ } catch (error) {
85
+ console.error(`Error: ${error instanceof Error ? error.message : "Unknown error"}`);
86
+ process.exit(1);
87
+ }
88
+ });
89
+ promptCmd.command("list").description("List all available prompts on the server").action(async () => {
90
+ try {
91
+ await listCommand();
92
+ } catch (error) {
93
+ console.error(`Error: ${error instanceof Error ? error.message : "Unknown error"}`);
94
+ process.exit(1);
95
+ }
96
+ });
97
+ promptCmd.command("sync").description("Sync prompts - fetch remote and push local").action(async () => {
98
+ try {
99
+ await syncCommand();
100
+ } catch (error) {
101
+ console.error(`Error: ${error instanceof Error ? error.message : "Unknown error"}`);
102
+ process.exit(1);
103
+ }
104
+ });
105
+ program.parse(process.argv);
106
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cli/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\n// Load environment variables BEFORE any other imports\nimport { config } from \"dotenv\";\nconfig();\n\nimport { Command } from \"commander\";\nimport { parsePromptSpec } from \"./types\";\n\n// Import commands with proper async handling\nconst addCommand = async (name: string, options: { version?: string; localFile?: string }): Promise<void> => {\n const { addCommand: addCommandImpl } = await import(\"./commands/add.js\");\n return addCommandImpl(name, options);\n};\n\nconst removeCommand = async (name: string): Promise<void> => {\n const { removeCommand: removeCommandImpl } = await import(\"./commands/remove.js\");\n return removeCommandImpl(name);\n};\n\nconst initCommand = async (): Promise<void> => {\n const { initCommand: initCommandImpl } = await import(\"./commands/init.js\");\n return initCommandImpl();\n};\n\nconst loginCommand = async (): Promise<void> => {\n const { loginCommand: loginCommandImpl } = await import(\"./commands/login.js\");\n return loginCommandImpl();\n};\n\nconst listCommand = async (): Promise<void> => {\n const { listCommand: listCommandImpl } = await import(\"./commands/list.js\");\n return listCommandImpl();\n};\n\nconst syncCommand = async (): Promise<void> => {\n const { syncCommand: syncCommandImpl } = await import(\"./commands/sync.js\");\n return syncCommandImpl();\n};\n\nconst createCommand = async (name: string, options: Record<string, unknown>): Promise<void> => {\n const { createCommand: createCommandImpl } = await import(\"./commands/create.js\");\n return createCommandImpl(name, options);\n};\n\nconst program = new Command();\n\nprogram\n .name(\"langwatch\")\n .description(\"LangWatch CLI - The npm of prompts\")\n .configureHelp({\n showGlobalOptions: true,\n })\n .showHelpAfterError()\n .showSuggestionAfterError();\n\n// Top-level commands\nprogram\n .command(\"login\")\n .description(\"Login to LangWatch and save API key\")\n .action(async () => {\n try {\n await loginCommand();\n } catch (error) {\n console.error(`Error: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n process.exit(1);\n }\n });\n\n// Add prompt command group\nconst promptCmd = program\n .command(\"prompt\")\n .description(\"Manage prompt dependencies\");\n\npromptCmd\n .command(\"init\")\n .description(\"Initialize a new prompts project\")\n .action(async () => {\n try {\n await initCommand();\n } catch (error) {\n console.error(`Error: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n process.exit(1);\n }\n });\n\npromptCmd\n .command(\"create <name>\")\n .description(\"Create a new prompt YAML file with default content\")\n .action(async (name: string) => {\n try {\n await createCommand(name, {});\n } catch (error) {\n console.error(`Error: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n process.exit(1);\n }\n });\n\npromptCmd\n .command(\"add <spec> [localFile]\")\n .description(\"Add a prompt dependency (e.g., 'agent/foo', 'agent/bar@5') or local file\")\n .action(async (spec: string, localFile?: string) => {\n try {\n if (localFile) {\n await addCommand(spec, { localFile });\n } else {\n const { name, version } = parsePromptSpec(spec);\n await addCommand(name, { version });\n }\n } catch (error) {\n console.error(`Error: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n process.exit(1);\n }\n });\n\npromptCmd\n .command(\"remove <name>\")\n .description(\"Remove a prompt dependency\")\n .action(async (name: string) => {\n try {\n await removeCommand(name);\n } catch (error) {\n console.error(`Error: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n process.exit(1);\n }\n });\n\npromptCmd\n .command(\"list\")\n .description(\"List all available prompts on the server\")\n .action(async () => {\n try {\n await listCommand();\n } catch (error) {\n console.error(`Error: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n process.exit(1);\n }\n });\n\npromptCmd\n .command(\"sync\")\n .description(\"Sync prompts - fetch remote and push local\")\n .action(async () => {\n try {\n await syncCommand();\n } catch (error) {\n console.error(`Error: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n process.exit(1);\n }\n });\n\nprogram.parse(process.argv);"],"mappings":"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","names":[]}
@@ -6,7 +6,7 @@ var _chunkLD74LVRUjs = require('./chunk-LD74LVRU.js');
6
6
 
7
7
 
8
8
 
9
- var _chunkWM2GRSRWjs = require('./chunk-WM2GRSRW.js');
9
+ var _chunk6I4EA43Yjs = require('./chunk-6I4EA43Y.js');
10
10
 
11
11
 
12
12
  var _chunkKGDAENGDjs = require('./chunk-KGDAENGD.js');
@@ -19,9 +19,11 @@ var _chunkPCQVQ7SBjs = require('./chunk-PCQVQ7SB.js');
19
19
 
20
20
 
21
21
 
22
+ var _chunkDTEKFQ4Ujs = require('./chunk-DTEKFQ4U.js');
22
23
 
23
24
 
24
- var _chunkVJSOCNPAjs = require('./chunk-VJSOCNPA.js');
25
+
26
+ var _chunkFJLK5CFLjs = require('./chunk-FJLK5CFL.js');
25
27
 
26
28
  // src/client-browser.ts
27
29
  var _sdktraceweb = require('@opentelemetry/sdk-trace-web');
@@ -40,13 +42,13 @@ async function setupLangWatch(options = {}) {
40
42
  if (options.skipOpenTelemetrySetup) return;
41
43
  const endpointURL = new URL("/api/otel/v1/traces", _chunkPCQVQ7SBjs.getEndpoint.call(void 0, ));
42
44
  const langwatchSpanProcessor = new (0, _chunkKGDAENGDjs.FilterableBatchSpanProcessor)(
43
- new (0, _chunkWM2GRSRWjs.LangWatchExporter)(_chunkPCQVQ7SBjs.getApiKey.call(void 0, ), endpointURL.toString()),
45
+ new (0, _chunk6I4EA43Yjs.LangWatchExporter)(_chunkPCQVQ7SBjs.getApiKey.call(void 0, ), endpointURL.toString()),
44
46
  (_a = options.otelSpanProcessingExcludeRules) != null ? _a : []
45
47
  );
46
- const langwatchResource = _resources.resourceFromAttributes.call(void 0, _chunkVJSOCNPAjs.__spreadProps.call(void 0, _chunkVJSOCNPAjs.__spreadValues.call(void 0, {}, options.baseAttributes), {
47
- [_chunkVJSOCNPAjs.ATTR_LANGWATCH_SDK_LANGUAGE]: "typescript-browser",
48
- [_chunkVJSOCNPAjs.ATTR_LANGWATCH_SDK_VERSION]: _chunkWM2GRSRWjs.version,
49
- [_chunkVJSOCNPAjs.ATTR_LANGWATCH_SDK_NAME]: "langwatch-observability-sdk"
48
+ const langwatchResource = _resources.resourceFromAttributes.call(void 0, _chunkFJLK5CFLjs.__spreadProps.call(void 0, _chunkFJLK5CFLjs.__spreadValues.call(void 0, {}, options.baseAttributes), {
49
+ [_chunkDTEKFQ4Ujs.ATTR_LANGWATCH_SDK_LANGUAGE]: "typescript-browser",
50
+ [_chunkDTEKFQ4Ujs.ATTR_LANGWATCH_SDK_VERSION]: _chunk6I4EA43Yjs.version,
51
+ [_chunkDTEKFQ4Ujs.ATTR_LANGWATCH_SDK_NAME]: "langwatch-observability-sdk"
50
52
  }));
51
53
  if (_chunkLD74LVRUjs.isOtelInitialized.call(void 0, )) {
52
54
  _chunkLD74LVRUjs.mergeResourceIntoExistingTracerProvider.call(void 0, langwatchResource);
@@ -58,9 +60,9 @@ async function setupLangWatch(options = {}) {
58
60
  } else {
59
61
  provider = new (0, _sdktraceweb.WebTracerProvider)({
60
62
  resource: _resources.resourceFromAttributes.call(void 0, {
61
- [_chunkVJSOCNPAjs.ATTR_LANGWATCH_SDK_LANGUAGE]: "typescript-browser",
62
- [_chunkVJSOCNPAjs.ATTR_LANGWATCH_SDK_VERSION]: _chunkWM2GRSRWjs.version,
63
- [_chunkVJSOCNPAjs.ATTR_LANGWATCH_SDK_NAME]: "langwatch-observability-sdk"
63
+ [_chunkDTEKFQ4Ujs.ATTR_LANGWATCH_SDK_LANGUAGE]: "typescript-browser",
64
+ [_chunkDTEKFQ4Ujs.ATTR_LANGWATCH_SDK_VERSION]: _chunk6I4EA43Yjs.version,
65
+ [_chunkDTEKFQ4Ujs.ATTR_LANGWATCH_SDK_NAME]: "langwatch-observability-sdk"
64
66
  }),
65
67
  spanProcessors: [langwatchSpanProcessor, ...(_c = options.otelSpanProcessors) != null ? _c : []]
66
68
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/client-browser.js","../src/client-browser.ts"],"names":[],"mappings":"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","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/client-browser.js","sourcesContent":[null,"import { setConfig, SetupOptions, getApiKey, getEndpoint } from \"./client\";\nimport { SpanProcessor, WebTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport { ZoneContextManager } from '@opentelemetry/context-zone';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\nimport { version } from \"../package.json\";\nimport { resourceFromAttributes } from \"@opentelemetry/resources\";\nimport * as intSemconv from \"./observability/semconv\";\nimport { FilterableBatchSpanProcessor } from \"./observability/processors\";\nimport { LangWatchExporter } from \"./observability/exporters\";\nimport { addSpanProcessorToExistingTracerProvider, isOtelInitialized, mergeResourceIntoExistingTracerProvider } from \"./client-shared\";\n\nlet managedSpanProcessors: SpanProcessor[] = [];\nlet provider: WebTracerProvider | null = null;\nlet browserSetupCalled: boolean = false;\n\nexport async function setupLangWatch(options: SetupOptions = {}) {\n if (browserSetupCalled) {\n throw new Error(\"LangWatch setup has already been called in this process. Setup can only be called once, if you need to modify OpenTelemetry setup then use the OpenTelemetry API directly.\");\n }\n\n setConfig(options);\n\n if (options.skipOpenTelemetrySetup) return;\n\n const endpointURL = new URL(\"/api/otel/v1/traces\", getEndpoint());\n const langwatchSpanProcessor = new FilterableBatchSpanProcessor(\n new LangWatchExporter(getApiKey(), endpointURL.toString()),\n options.otelSpanProcessingExcludeRules ?? [],\n );\n\n const langwatchResource = resourceFromAttributes({\n ...options.baseAttributes,\n [intSemconv.ATTR_LANGWATCH_SDK_LANGUAGE]: \"typescript-browser\",\n [intSemconv.ATTR_LANGWATCH_SDK_VERSION]: version,\n [intSemconv.ATTR_LANGWATCH_SDK_NAME]: \"langwatch-observability-sdk\",\n });\n\n if (isOtelInitialized()) {\n mergeResourceIntoExistingTracerProvider(langwatchResource);\n addSpanProcessorToExistingTracerProvider(langwatchSpanProcessor);\n for (const spanProcessor of options.otelSpanProcessors ?? []) {\n addSpanProcessorToExistingTracerProvider(spanProcessor);\n }\n\n managedSpanProcessors = [langwatchSpanProcessor];\n } else {\n provider = new WebTracerProvider({\n resource: resourceFromAttributes({\n [intSemconv.ATTR_LANGWATCH_SDK_LANGUAGE]: \"typescript-browser\",\n [intSemconv.ATTR_LANGWATCH_SDK_VERSION]: version,\n [intSemconv.ATTR_LANGWATCH_SDK_NAME]: \"langwatch-observability-sdk\",\n }),\n spanProcessors: [langwatchSpanProcessor, ...(options.otelSpanProcessors ?? [])],\n });\n\n provider.register({\n contextManager: new ZoneContextManager(),\n propagator: new W3CTraceContextPropagator(),\n });\n }\n\n // This is not guaranteed to be called, but it's a good nice to have.\n window.addEventListener(\"beforeunload\", async () => {\n if (provider) {\n await provider.shutdown();\n } else {\n await Promise.all(managedSpanProcessors.map(p => p.shutdown()));\n }\n });\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/client-browser.js","../src/client-browser.ts"],"names":[],"mappings":"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","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/client-browser.js","sourcesContent":[null,"import { setConfig, SetupOptions, getApiKey, getEndpoint } from \"./client\";\nimport { SpanProcessor, WebTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport { ZoneContextManager } from '@opentelemetry/context-zone';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\nimport { version } from \"../package.json\";\nimport { resourceFromAttributes } from \"@opentelemetry/resources\";\nimport * as intSemconv from \"./observability/semconv\";\nimport { FilterableBatchSpanProcessor } from \"./observability/processors\";\nimport { LangWatchExporter } from \"./observability/exporters\";\nimport { addSpanProcessorToExistingTracerProvider, isOtelInitialized, mergeResourceIntoExistingTracerProvider } from \"./client-shared\";\n\nlet managedSpanProcessors: SpanProcessor[] = [];\nlet provider: WebTracerProvider | null = null;\nlet browserSetupCalled: boolean = false;\n\nexport async function setupLangWatch(options: SetupOptions = {}) {\n if (browserSetupCalled) {\n throw new Error(\"LangWatch setup has already been called in this process. Setup can only be called once, if you need to modify OpenTelemetry setup then use the OpenTelemetry API directly.\");\n }\n\n setConfig(options);\n\n if (options.skipOpenTelemetrySetup) return;\n\n const endpointURL = new URL(\"/api/otel/v1/traces\", getEndpoint());\n const langwatchSpanProcessor = new FilterableBatchSpanProcessor(\n new LangWatchExporter(getApiKey(), endpointURL.toString()),\n options.otelSpanProcessingExcludeRules ?? [],\n );\n\n const langwatchResource = resourceFromAttributes({\n ...options.baseAttributes,\n [intSemconv.ATTR_LANGWATCH_SDK_LANGUAGE]: \"typescript-browser\",\n [intSemconv.ATTR_LANGWATCH_SDK_VERSION]: version,\n [intSemconv.ATTR_LANGWATCH_SDK_NAME]: \"langwatch-observability-sdk\",\n });\n\n if (isOtelInitialized()) {\n mergeResourceIntoExistingTracerProvider(langwatchResource);\n addSpanProcessorToExistingTracerProvider(langwatchSpanProcessor);\n for (const spanProcessor of options.otelSpanProcessors ?? []) {\n addSpanProcessorToExistingTracerProvider(spanProcessor);\n }\n\n managedSpanProcessors = [langwatchSpanProcessor];\n } else {\n provider = new WebTracerProvider({\n resource: resourceFromAttributes({\n [intSemconv.ATTR_LANGWATCH_SDK_LANGUAGE]: \"typescript-browser\",\n [intSemconv.ATTR_LANGWATCH_SDK_VERSION]: version,\n [intSemconv.ATTR_LANGWATCH_SDK_NAME]: \"langwatch-observability-sdk\",\n }),\n spanProcessors: [langwatchSpanProcessor, ...(options.otelSpanProcessors ?? [])],\n });\n\n provider.register({\n contextManager: new ZoneContextManager(),\n propagator: new W3CTraceContextPropagator(),\n });\n }\n\n // This is not guaranteed to be called, but it's a good nice to have.\n window.addEventListener(\"beforeunload\", async () => {\n if (provider) {\n await provider.shutdown();\n } else {\n await Promise.all(managedSpanProcessors.map(p => p.shutdown()));\n }\n });\n}\n"]}
@@ -6,7 +6,7 @@ import {
6
6
  import {
7
7
  LangWatchExporter,
8
8
  version
9
- } from "./chunk-REUCVT7A.mjs";
9
+ } from "./chunk-YFUZF7JM.mjs";
10
10
  import {
11
11
  FilterableBatchSpanProcessor
12
12
  } from "./chunk-PR3JDWC3.mjs";
@@ -18,10 +18,12 @@ import {
18
18
  import {
19
19
  ATTR_LANGWATCH_SDK_LANGUAGE,
20
20
  ATTR_LANGWATCH_SDK_NAME,
21
- ATTR_LANGWATCH_SDK_VERSION,
21
+ ATTR_LANGWATCH_SDK_VERSION
22
+ } from "./chunk-UU33HCCZ.mjs";
23
+ import {
22
24
  __spreadProps,
23
25
  __spreadValues
24
- } from "./chunk-4BZATFKJ.mjs";
26
+ } from "./chunk-YN4436PK.mjs";
25
27
 
26
28
  // src/client-browser.ts
27
29
  import { WebTracerProvider } from "@opentelemetry/sdk-trace-web";
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/client-browser.ts"],"sourcesContent":["import { setConfig, SetupOptions, getApiKey, getEndpoint } from \"./client\";\nimport { SpanProcessor, WebTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport { ZoneContextManager } from '@opentelemetry/context-zone';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\nimport { version } from \"../package.json\";\nimport { resourceFromAttributes } from \"@opentelemetry/resources\";\nimport * as intSemconv from \"./observability/semconv\";\nimport { FilterableBatchSpanProcessor } from \"./observability/processors\";\nimport { LangWatchExporter } from \"./observability/exporters\";\nimport { addSpanProcessorToExistingTracerProvider, isOtelInitialized, mergeResourceIntoExistingTracerProvider } from \"./client-shared\";\n\nlet managedSpanProcessors: SpanProcessor[] = [];\nlet provider: WebTracerProvider | null = null;\nlet browserSetupCalled: boolean = false;\n\nexport async function setupLangWatch(options: SetupOptions = {}) {\n if (browserSetupCalled) {\n throw new Error(\"LangWatch setup has already been called in this process. Setup can only be called once, if you need to modify OpenTelemetry setup then use the OpenTelemetry API directly.\");\n }\n\n setConfig(options);\n\n if (options.skipOpenTelemetrySetup) return;\n\n const endpointURL = new URL(\"/api/otel/v1/traces\", getEndpoint());\n const langwatchSpanProcessor = new FilterableBatchSpanProcessor(\n new LangWatchExporter(getApiKey(), endpointURL.toString()),\n options.otelSpanProcessingExcludeRules ?? [],\n );\n\n const langwatchResource = resourceFromAttributes({\n ...options.baseAttributes,\n [intSemconv.ATTR_LANGWATCH_SDK_LANGUAGE]: \"typescript-browser\",\n [intSemconv.ATTR_LANGWATCH_SDK_VERSION]: version,\n [intSemconv.ATTR_LANGWATCH_SDK_NAME]: \"langwatch-observability-sdk\",\n });\n\n if (isOtelInitialized()) {\n mergeResourceIntoExistingTracerProvider(langwatchResource);\n addSpanProcessorToExistingTracerProvider(langwatchSpanProcessor);\n for (const spanProcessor of options.otelSpanProcessors ?? []) {\n addSpanProcessorToExistingTracerProvider(spanProcessor);\n }\n\n managedSpanProcessors = [langwatchSpanProcessor];\n } else {\n provider = new WebTracerProvider({\n resource: resourceFromAttributes({\n [intSemconv.ATTR_LANGWATCH_SDK_LANGUAGE]: \"typescript-browser\",\n [intSemconv.ATTR_LANGWATCH_SDK_VERSION]: version,\n [intSemconv.ATTR_LANGWATCH_SDK_NAME]: \"langwatch-observability-sdk\",\n }),\n spanProcessors: [langwatchSpanProcessor, ...(options.otelSpanProcessors ?? [])],\n });\n\n provider.register({\n contextManager: new ZoneContextManager(),\n propagator: new W3CTraceContextPropagator(),\n });\n }\n\n // This is not guaranteed to be called, but it's a good nice to have.\n window.addEventListener(\"beforeunload\", async () => {\n if (provider) {\n await provider.shutdown();\n } else {\n await Promise.all(managedSpanProcessors.map(p => p.shutdown()));\n }\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAwB,yBAAyB;AACjD,SAAS,0BAA0B;AACnC,SAAS,iCAAiC;AAE1C,SAAS,8BAA8B;AAMvC,IAAI,wBAAyC,CAAC;AAC9C,IAAI,WAAqC;AACzC,IAAI,qBAA8B;AAElC,eAAsB,eAAe,UAAwB,CAAC,GAAG;AAfjE;AAgBE,MAAI,oBAAoB;AACtB,UAAM,IAAI,MAAM,4KAA4K;AAAA,EAC9L;AAEA,YAAU,OAAO;AAEjB,MAAI,QAAQ,uBAAwB;AAEpC,QAAM,cAAc,IAAI,IAAI,uBAAuB,YAAY,CAAC;AAChE,QAAM,yBAAyB,IAAI;AAAA,IACjC,IAAI,kBAAkB,UAAU,GAAG,YAAY,SAAS,CAAC;AAAA,KACzD,aAAQ,mCAAR,YAA0C,CAAC;AAAA,EAC7C;AAEA,QAAM,oBAAoB,uBAAuB,iCAC5C,QAAQ,iBADoC;AAAA,IAE/C,CAAY,2BAA2B,GAAG;AAAA,IAC1C,CAAY,0BAA0B,GAAG;AAAA,IACzC,CAAY,uBAAuB,GAAG;AAAA,EACxC,EAAC;AAED,MAAI,kBAAkB,GAAG;AACvB,4CAAwC,iBAAiB;AACzD,6CAAyC,sBAAsB;AAC/D,eAAW,kBAAiB,aAAQ,uBAAR,YAA8B,CAAC,GAAG;AAC5D,+CAAyC,aAAa;AAAA,IACxD;AAEA,4BAAwB,CAAC,sBAAsB;AAAA,EACjD,OAAO;AACL,eAAW,IAAI,kBAAkB;AAAA,MAC/B,UAAU,uBAAuB;AAAA,QAC/B,CAAY,2BAA2B,GAAG;AAAA,QAC1C,CAAY,0BAA0B,GAAG;AAAA,QACzC,CAAY,uBAAuB,GAAG;AAAA,MACxC,CAAC;AAAA,MACD,gBAAgB,CAAC,wBAAwB,IAAI,aAAQ,uBAAR,YAA8B,CAAC,CAAE;AAAA,IAChF,CAAC;AAED,aAAS,SAAS;AAAA,MAChB,gBAAgB,IAAI,mBAAmB;AAAA,MACvC,YAAY,IAAI,0BAA0B;AAAA,IAC5C,CAAC;AAAA,EACH;AAGA,SAAO,iBAAiB,gBAAgB,YAAY;AAClD,QAAI,UAAU;AACZ,YAAM,SAAS,SAAS;AAAA,IAC1B,OAAO;AACL,YAAM,QAAQ,IAAI,sBAAsB,IAAI,OAAK,EAAE,SAAS,CAAC,CAAC;AAAA,IAChE;AAAA,EACF,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../src/client-browser.ts"],"sourcesContent":["import { setConfig, SetupOptions, getApiKey, getEndpoint } from \"./client\";\nimport { SpanProcessor, WebTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport { ZoneContextManager } from '@opentelemetry/context-zone';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\nimport { version } from \"../package.json\";\nimport { resourceFromAttributes } from \"@opentelemetry/resources\";\nimport * as intSemconv from \"./observability/semconv\";\nimport { FilterableBatchSpanProcessor } from \"./observability/processors\";\nimport { LangWatchExporter } from \"./observability/exporters\";\nimport { addSpanProcessorToExistingTracerProvider, isOtelInitialized, mergeResourceIntoExistingTracerProvider } from \"./client-shared\";\n\nlet managedSpanProcessors: SpanProcessor[] = [];\nlet provider: WebTracerProvider | null = null;\nlet browserSetupCalled: boolean = false;\n\nexport async function setupLangWatch(options: SetupOptions = {}) {\n if (browserSetupCalled) {\n throw new Error(\"LangWatch setup has already been called in this process. Setup can only be called once, if you need to modify OpenTelemetry setup then use the OpenTelemetry API directly.\");\n }\n\n setConfig(options);\n\n if (options.skipOpenTelemetrySetup) return;\n\n const endpointURL = new URL(\"/api/otel/v1/traces\", getEndpoint());\n const langwatchSpanProcessor = new FilterableBatchSpanProcessor(\n new LangWatchExporter(getApiKey(), endpointURL.toString()),\n options.otelSpanProcessingExcludeRules ?? [],\n );\n\n const langwatchResource = resourceFromAttributes({\n ...options.baseAttributes,\n [intSemconv.ATTR_LANGWATCH_SDK_LANGUAGE]: \"typescript-browser\",\n [intSemconv.ATTR_LANGWATCH_SDK_VERSION]: version,\n [intSemconv.ATTR_LANGWATCH_SDK_NAME]: \"langwatch-observability-sdk\",\n });\n\n if (isOtelInitialized()) {\n mergeResourceIntoExistingTracerProvider(langwatchResource);\n addSpanProcessorToExistingTracerProvider(langwatchSpanProcessor);\n for (const spanProcessor of options.otelSpanProcessors ?? []) {\n addSpanProcessorToExistingTracerProvider(spanProcessor);\n }\n\n managedSpanProcessors = [langwatchSpanProcessor];\n } else {\n provider = new WebTracerProvider({\n resource: resourceFromAttributes({\n [intSemconv.ATTR_LANGWATCH_SDK_LANGUAGE]: \"typescript-browser\",\n [intSemconv.ATTR_LANGWATCH_SDK_VERSION]: version,\n [intSemconv.ATTR_LANGWATCH_SDK_NAME]: \"langwatch-observability-sdk\",\n }),\n spanProcessors: [langwatchSpanProcessor, ...(options.otelSpanProcessors ?? [])],\n });\n\n provider.register({\n contextManager: new ZoneContextManager(),\n propagator: new W3CTraceContextPropagator(),\n });\n }\n\n // This is not guaranteed to be called, but it's a good nice to have.\n window.addEventListener(\"beforeunload\", async () => {\n if (provider) {\n await provider.shutdown();\n } else {\n await Promise.all(managedSpanProcessors.map(p => p.shutdown()));\n }\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAwB,yBAAyB;AACjD,SAAS,0BAA0B;AACnC,SAAS,iCAAiC;AAE1C,SAAS,8BAA8B;AAMvC,IAAI,wBAAyC,CAAC;AAC9C,IAAI,WAAqC;AACzC,IAAI,qBAA8B;AAElC,eAAsB,eAAe,UAAwB,CAAC,GAAG;AAfjE;AAgBE,MAAI,oBAAoB;AACtB,UAAM,IAAI,MAAM,4KAA4K;AAAA,EAC9L;AAEA,YAAU,OAAO;AAEjB,MAAI,QAAQ,uBAAwB;AAEpC,QAAM,cAAc,IAAI,IAAI,uBAAuB,YAAY,CAAC;AAChE,QAAM,yBAAyB,IAAI;AAAA,IACjC,IAAI,kBAAkB,UAAU,GAAG,YAAY,SAAS,CAAC;AAAA,KACzD,aAAQ,mCAAR,YAA0C,CAAC;AAAA,EAC7C;AAEA,QAAM,oBAAoB,uBAAuB,iCAC5C,QAAQ,iBADoC;AAAA,IAE/C,CAAY,2BAA2B,GAAG;AAAA,IAC1C,CAAY,0BAA0B,GAAG;AAAA,IACzC,CAAY,uBAAuB,GAAG;AAAA,EACxC,EAAC;AAED,MAAI,kBAAkB,GAAG;AACvB,4CAAwC,iBAAiB;AACzD,6CAAyC,sBAAsB;AAC/D,eAAW,kBAAiB,aAAQ,uBAAR,YAA8B,CAAC,GAAG;AAC5D,+CAAyC,aAAa;AAAA,IACxD;AAEA,4BAAwB,CAAC,sBAAsB;AAAA,EACjD,OAAO;AACL,eAAW,IAAI,kBAAkB;AAAA,MAC/B,UAAU,uBAAuB;AAAA,QAC/B,CAAY,2BAA2B,GAAG;AAAA,QAC1C,CAAY,0BAA0B,GAAG;AAAA,QACzC,CAAY,uBAAuB,GAAG;AAAA,MACxC,CAAC;AAAA,MACD,gBAAgB,CAAC,wBAAwB,IAAI,aAAQ,uBAAR,YAA8B,CAAC,CAAE;AAAA,IAChF,CAAC;AAED,aAAS,SAAS;AAAA,MAChB,gBAAgB,IAAI,mBAAmB;AAAA,MACvC,YAAY,IAAI,0BAA0B;AAAA,IAC5C,CAAC;AAAA,EACH;AAGA,SAAO,iBAAiB,gBAAgB,YAAY;AAClD,QAAI,UAAU;AACZ,YAAM,SAAS,SAAS;AAAA,IAC1B,OAAO;AACL,YAAM,QAAQ,IAAI,sBAAsB,IAAI,OAAK,EAAE,SAAS,CAAC,CAAC;AAAA,IAChE;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -6,8 +6,8 @@ var _chunkLD74LVRUjs = require('./chunk-LD74LVRU.js');
6
6
 
7
7
 
8
8
 
9
- var _chunkWM2GRSRWjs = require('./chunk-WM2GRSRW.js');
10
- require('./chunk-G3AUABT7.js');
9
+ var _chunk6I4EA43Yjs = require('./chunk-6I4EA43Y.js');
10
+ require('./chunk-2ODBGSBI.js');
11
11
 
12
12
 
13
13
  var _chunkKGDAENGDjs = require('./chunk-KGDAENGD.js');
@@ -16,14 +16,16 @@ var _chunkKGDAENGDjs = require('./chunk-KGDAENGD.js');
16
16
 
17
17
 
18
18
  var _chunkPCQVQ7SBjs = require('./chunk-PCQVQ7SB.js');
19
- require('./chunk-SVJ7SCGB.js');
19
+ require('./chunk-52GXX3MA.js');
20
20
 
21
21
 
22
22
 
23
23
 
24
+ var _chunkDTEKFQ4Ujs = require('./chunk-DTEKFQ4U.js');
24
25
 
25
26
 
26
- var _chunkVJSOCNPAjs = require('./chunk-VJSOCNPA.js');
27
+
28
+ var _chunkFJLK5CFLjs = require('./chunk-FJLK5CFL.js');
27
29
 
28
30
  // src/client-node.ts
29
31
  var _sdknode = require('@opentelemetry/sdk-node');
@@ -43,13 +45,13 @@ async function setupLangWatch(options = {}) {
43
45
  if (options.skipOpenTelemetrySetup) return;
44
46
  const endpointURL = new URL("/api/otel/v1/traces", _chunkPCQVQ7SBjs.getEndpoint.call(void 0, ));
45
47
  const langwatchSpanProcessor = new (0, _chunkKGDAENGDjs.FilterableBatchSpanProcessor)(
46
- new (0, _chunkWM2GRSRWjs.LangWatchExporter)(_chunkPCQVQ7SBjs.getApiKey.call(void 0, ), endpointURL.toString()),
48
+ new (0, _chunk6I4EA43Yjs.LangWatchExporter)(_chunkPCQVQ7SBjs.getApiKey.call(void 0, ), endpointURL.toString()),
47
49
  (_a = options.otelSpanProcessingExcludeRules) != null ? _a : []
48
50
  );
49
- const langwatchResource = _resources.resourceFromAttributes.call(void 0, _chunkVJSOCNPAjs.__spreadProps.call(void 0, _chunkVJSOCNPAjs.__spreadValues.call(void 0, {}, options.baseAttributes), {
50
- [_chunkVJSOCNPAjs.ATTR_LANGWATCH_SDK_LANGUAGE]: "typescript-node",
51
- [_chunkVJSOCNPAjs.ATTR_LANGWATCH_SDK_VERSION]: _chunkWM2GRSRWjs.version,
52
- [_chunkVJSOCNPAjs.ATTR_LANGWATCH_SDK_NAME]: "langwatch-observability-sdk"
51
+ const langwatchResource = _resources.resourceFromAttributes.call(void 0, _chunkFJLK5CFLjs.__spreadProps.call(void 0, _chunkFJLK5CFLjs.__spreadValues.call(void 0, {}, options.baseAttributes), {
52
+ [_chunkDTEKFQ4Ujs.ATTR_LANGWATCH_SDK_LANGUAGE]: "typescript-node",
53
+ [_chunkDTEKFQ4Ujs.ATTR_LANGWATCH_SDK_VERSION]: _chunk6I4EA43Yjs.version,
54
+ [_chunkDTEKFQ4Ujs.ATTR_LANGWATCH_SDK_NAME]: "langwatch-observability-sdk"
53
55
  }));
54
56
  if (_chunkLD74LVRUjs.isOtelInitialized.call(void 0, )) {
55
57
  _chunkLD74LVRUjs.mergeResourceIntoExistingTracerProvider.call(void 0, langwatchResource);
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/client-node.js","../src/client-node.ts"],"names":[],"mappings":"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","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/client-node.js","sourcesContent":[null,"import { SpanProcessor } from \"@opentelemetry/sdk-trace-base\";\nimport { getApiKey, getEndpoint, setConfig, SetupOptions } from \"./client\";\nimport { NodeSDK } from '@opentelemetry/sdk-node';\nimport { resourceFromAttributes } from \"@opentelemetry/resources\";\nimport { AsyncLocalStorageContextManager } from \"@opentelemetry/context-async-hooks\";\nimport { W3CTraceContextPropagator } from \"@opentelemetry/core\";\nimport { version } from \"../package.json\";\nimport * as intSemconv from \"./observability/semconv\";\nimport { addSpanProcessorToExistingTracerProvider, isOtelInitialized, mergeResourceIntoExistingTracerProvider } from \"./client-shared\";\nimport { FilterableBatchSpanProcessor } from \"./observability\";\nimport { LangWatchExporter } from \"./observability/exporters\";\n\nlet managedSpanProcessors: SpanProcessor[] = [];\nlet nodeSetupCalled: boolean = false;\nlet sdk: NodeSDK | null = null;\n\nexport async function setupLangWatch(options: SetupOptions = {}) {\n if (nodeSetupCalled) {\n throw new Error(\"LangWatch setup has already been called in this process. Setup can only be called once, if you need to modify OpenTelemetry setup then use the OpenTelemetry API directly.\");\n }\n\n setConfig(options);\n nodeSetupCalled = true;\n\n if (options.skipOpenTelemetrySetup) return;\n\n const endpointURL = new URL(\"/api/otel/v1/traces\", getEndpoint());\n const langwatchSpanProcessor = new FilterableBatchSpanProcessor(\n new LangWatchExporter(getApiKey(), endpointURL.toString()),\n options.otelSpanProcessingExcludeRules ?? [],\n );\n\n const langwatchResource = resourceFromAttributes({\n ...options.baseAttributes,\n [intSemconv.ATTR_LANGWATCH_SDK_LANGUAGE]: \"typescript-node\",\n [intSemconv.ATTR_LANGWATCH_SDK_VERSION]: version,\n [intSemconv.ATTR_LANGWATCH_SDK_NAME]: \"langwatch-observability-sdk\",\n });\n\n if (isOtelInitialized()) {\n mergeResourceIntoExistingTracerProvider(langwatchResource);\n addSpanProcessorToExistingTracerProvider(langwatchSpanProcessor);\n for (const spanProcessor of options.otelSpanProcessors ?? []) {\n addSpanProcessorToExistingTracerProvider(spanProcessor);\n }\n\n managedSpanProcessors = [langwatchSpanProcessor];\n } else {\n sdk = new NodeSDK({\n resource: langwatchResource,\n spanProcessors: [langwatchSpanProcessor, ...(options.otelSpanProcessors ?? [])],\n contextManager: new AsyncLocalStorageContextManager(),\n textMapPropagator: new W3CTraceContextPropagator(),\n });\n\n sdk.start();\n }\n\n // If we detect interrupt, termination, or test beforeExit signals, then we attempt\n // to shutdown.\n // - If an SDK exists, then we just attempt to shutdown the SDK.\n // - If no SDK exists, then we attempt to shutdown ONLY the SpanProcessors that are\n // managed by this LangWatch SDK.\n [\"SIGINT\", \"SIGTERM\", \"beforeExit\"].forEach((signal) => {\n process.on(signal as any, async () => {\n try {\n if (sdk) {\n await sdk.shutdown();\n } else {\n await Promise.all(managedSpanProcessors.map(p => p.shutdown()));\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Error shutting down OpenTelemetry SDK:\", error);\n }\n\n if (signal !== \"beforeExit\") {\n process.exit();\n }\n });\n });\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/client-node.js","../src/client-node.ts"],"names":[],"mappings":"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","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/client-node.js","sourcesContent":[null,"import { SpanProcessor } from \"@opentelemetry/sdk-trace-base\";\nimport { getApiKey, getEndpoint, setConfig, SetupOptions } from \"./client\";\nimport { NodeSDK } from '@opentelemetry/sdk-node';\nimport { resourceFromAttributes } from \"@opentelemetry/resources\";\nimport { AsyncLocalStorageContextManager } from \"@opentelemetry/context-async-hooks\";\nimport { W3CTraceContextPropagator } from \"@opentelemetry/core\";\nimport { version } from \"../package.json\";\nimport * as intSemconv from \"./observability/semconv\";\nimport { addSpanProcessorToExistingTracerProvider, isOtelInitialized, mergeResourceIntoExistingTracerProvider } from \"./client-shared\";\nimport { FilterableBatchSpanProcessor } from \"./observability\";\nimport { LangWatchExporter } from \"./observability/exporters\";\n\nlet managedSpanProcessors: SpanProcessor[] = [];\nlet nodeSetupCalled: boolean = false;\nlet sdk: NodeSDK | null = null;\n\nexport async function setupLangWatch(options: SetupOptions = {}) {\n if (nodeSetupCalled) {\n throw new Error(\"LangWatch setup has already been called in this process. Setup can only be called once, if you need to modify OpenTelemetry setup then use the OpenTelemetry API directly.\");\n }\n\n setConfig(options);\n nodeSetupCalled = true;\n\n if (options.skipOpenTelemetrySetup) return;\n\n const endpointURL = new URL(\"/api/otel/v1/traces\", getEndpoint());\n const langwatchSpanProcessor = new FilterableBatchSpanProcessor(\n new LangWatchExporter(getApiKey(), endpointURL.toString()),\n options.otelSpanProcessingExcludeRules ?? [],\n );\n\n const langwatchResource = resourceFromAttributes({\n ...options.baseAttributes,\n [intSemconv.ATTR_LANGWATCH_SDK_LANGUAGE]: \"typescript-node\",\n [intSemconv.ATTR_LANGWATCH_SDK_VERSION]: version,\n [intSemconv.ATTR_LANGWATCH_SDK_NAME]: \"langwatch-observability-sdk\",\n });\n\n if (isOtelInitialized()) {\n mergeResourceIntoExistingTracerProvider(langwatchResource);\n addSpanProcessorToExistingTracerProvider(langwatchSpanProcessor);\n for (const spanProcessor of options.otelSpanProcessors ?? []) {\n addSpanProcessorToExistingTracerProvider(spanProcessor);\n }\n\n managedSpanProcessors = [langwatchSpanProcessor];\n } else {\n sdk = new NodeSDK({\n resource: langwatchResource,\n spanProcessors: [langwatchSpanProcessor, ...(options.otelSpanProcessors ?? [])],\n contextManager: new AsyncLocalStorageContextManager(),\n textMapPropagator: new W3CTraceContextPropagator(),\n });\n\n sdk.start();\n }\n\n // If we detect interrupt, termination, or test beforeExit signals, then we attempt\n // to shutdown.\n // - If an SDK exists, then we just attempt to shutdown the SDK.\n // - If no SDK exists, then we attempt to shutdown ONLY the SpanProcessors that are\n // managed by this LangWatch SDK.\n [\"SIGINT\", \"SIGTERM\", \"beforeExit\"].forEach((signal) => {\n process.on(signal as any, async () => {\n try {\n if (sdk) {\n await sdk.shutdown();\n } else {\n await Promise.all(managedSpanProcessors.map(p => p.shutdown()));\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Error shutting down OpenTelemetry SDK:\", error);\n }\n\n if (signal !== \"beforeExit\") {\n process.exit();\n }\n });\n });\n}\n"]}
@@ -6,8 +6,8 @@ import {
6
6
  import {
7
7
  LangWatchExporter,
8
8
  version
9
- } from "./chunk-REUCVT7A.mjs";
10
- import "./chunk-OM7VY3XT.mjs";
9
+ } from "./chunk-YFUZF7JM.mjs";
10
+ import "./chunk-Y666BJA5.mjs";
11
11
  import {
12
12
  FilterableBatchSpanProcessor
13
13
  } from "./chunk-PR3JDWC3.mjs";
@@ -16,14 +16,16 @@ import {
16
16
  getEndpoint,
17
17
  setConfig
18
18
  } from "./chunk-QEWDG5QE.mjs";
19
- import "./chunk-PMBEK6YE.mjs";
19
+ import "./chunk-J7ICRUU4.mjs";
20
20
  import {
21
21
  ATTR_LANGWATCH_SDK_LANGUAGE,
22
22
  ATTR_LANGWATCH_SDK_NAME,
23
- ATTR_LANGWATCH_SDK_VERSION,
23
+ ATTR_LANGWATCH_SDK_VERSION
24
+ } from "./chunk-UU33HCCZ.mjs";
25
+ import {
24
26
  __spreadProps,
25
27
  __spreadValues
26
- } from "./chunk-4BZATFKJ.mjs";
28
+ } from "./chunk-YN4436PK.mjs";
27
29
 
28
30
  // src/client-node.ts
29
31
  import { NodeSDK } from "@opentelemetry/sdk-node";
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/client-node.ts"],"sourcesContent":["import { SpanProcessor } from \"@opentelemetry/sdk-trace-base\";\nimport { getApiKey, getEndpoint, setConfig, SetupOptions } from \"./client\";\nimport { NodeSDK } from '@opentelemetry/sdk-node';\nimport { resourceFromAttributes } from \"@opentelemetry/resources\";\nimport { AsyncLocalStorageContextManager } from \"@opentelemetry/context-async-hooks\";\nimport { W3CTraceContextPropagator } from \"@opentelemetry/core\";\nimport { version } from \"../package.json\";\nimport * as intSemconv from \"./observability/semconv\";\nimport { addSpanProcessorToExistingTracerProvider, isOtelInitialized, mergeResourceIntoExistingTracerProvider } from \"./client-shared\";\nimport { FilterableBatchSpanProcessor } from \"./observability\";\nimport { LangWatchExporter } from \"./observability/exporters\";\n\nlet managedSpanProcessors: SpanProcessor[] = [];\nlet nodeSetupCalled: boolean = false;\nlet sdk: NodeSDK | null = null;\n\nexport async function setupLangWatch(options: SetupOptions = {}) {\n if (nodeSetupCalled) {\n throw new Error(\"LangWatch setup has already been called in this process. Setup can only be called once, if you need to modify OpenTelemetry setup then use the OpenTelemetry API directly.\");\n }\n\n setConfig(options);\n nodeSetupCalled = true;\n\n if (options.skipOpenTelemetrySetup) return;\n\n const endpointURL = new URL(\"/api/otel/v1/traces\", getEndpoint());\n const langwatchSpanProcessor = new FilterableBatchSpanProcessor(\n new LangWatchExporter(getApiKey(), endpointURL.toString()),\n options.otelSpanProcessingExcludeRules ?? [],\n );\n\n const langwatchResource = resourceFromAttributes({\n ...options.baseAttributes,\n [intSemconv.ATTR_LANGWATCH_SDK_LANGUAGE]: \"typescript-node\",\n [intSemconv.ATTR_LANGWATCH_SDK_VERSION]: version,\n [intSemconv.ATTR_LANGWATCH_SDK_NAME]: \"langwatch-observability-sdk\",\n });\n\n if (isOtelInitialized()) {\n mergeResourceIntoExistingTracerProvider(langwatchResource);\n addSpanProcessorToExistingTracerProvider(langwatchSpanProcessor);\n for (const spanProcessor of options.otelSpanProcessors ?? []) {\n addSpanProcessorToExistingTracerProvider(spanProcessor);\n }\n\n managedSpanProcessors = [langwatchSpanProcessor];\n } else {\n sdk = new NodeSDK({\n resource: langwatchResource,\n spanProcessors: [langwatchSpanProcessor, ...(options.otelSpanProcessors ?? [])],\n contextManager: new AsyncLocalStorageContextManager(),\n textMapPropagator: new W3CTraceContextPropagator(),\n });\n\n sdk.start();\n }\n\n // If we detect interrupt, termination, or test beforeExit signals, then we attempt\n // to shutdown.\n // - If an SDK exists, then we just attempt to shutdown the SDK.\n // - If no SDK exists, then we attempt to shutdown ONLY the SpanProcessors that are\n // managed by this LangWatch SDK.\n [\"SIGINT\", \"SIGTERM\", \"beforeExit\"].forEach((signal) => {\n process.on(signal as any, async () => {\n try {\n if (sdk) {\n await sdk.shutdown();\n } else {\n await Promise.all(managedSpanProcessors.map(p => p.shutdown()));\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Error shutting down OpenTelemetry SDK:\", error);\n }\n\n if (signal !== \"beforeExit\") {\n process.exit();\n }\n });\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,SAAS,eAAe;AACxB,SAAS,8BAA8B;AACvC,SAAS,uCAAuC;AAChD,SAAS,iCAAiC;AAO1C,IAAI,wBAAyC,CAAC;AAC9C,IAAI,kBAA2B;AAC/B,IAAI,MAAsB;AAE1B,eAAsB,eAAe,UAAwB,CAAC,GAAG;AAhBjE;AAiBE,MAAI,iBAAiB;AACnB,UAAM,IAAI,MAAM,4KAA4K;AAAA,EAC9L;AAEA,YAAU,OAAO;AACjB,oBAAkB;AAElB,MAAI,QAAQ,uBAAwB;AAEpC,QAAM,cAAc,IAAI,IAAI,uBAAuB,YAAY,CAAC;AAChE,QAAM,yBAAyB,IAAI;AAAA,IACjC,IAAI,kBAAkB,UAAU,GAAG,YAAY,SAAS,CAAC;AAAA,KACzD,aAAQ,mCAAR,YAA0C,CAAC;AAAA,EAC7C;AAEA,QAAM,oBAAoB,uBAAuB,iCAC5C,QAAQ,iBADoC;AAAA,IAE/C,CAAY,2BAA2B,GAAG;AAAA,IAC1C,CAAY,0BAA0B,GAAG;AAAA,IACzC,CAAY,uBAAuB,GAAG;AAAA,EACxC,EAAC;AAED,MAAI,kBAAkB,GAAG;AACvB,4CAAwC,iBAAiB;AACzD,6CAAyC,sBAAsB;AAC/D,eAAW,kBAAiB,aAAQ,uBAAR,YAA8B,CAAC,GAAG;AAC5D,+CAAyC,aAAa;AAAA,IACxD;AAEA,4BAAwB,CAAC,sBAAsB;AAAA,EACjD,OAAO;AACL,UAAM,IAAI,QAAQ;AAAA,MAChB,UAAU;AAAA,MACV,gBAAgB,CAAC,wBAAwB,IAAI,aAAQ,uBAAR,YAA8B,CAAC,CAAE;AAAA,MAC9E,gBAAgB,IAAI,gCAAgC;AAAA,MACpD,mBAAmB,IAAI,0BAA0B;AAAA,IACnD,CAAC;AAED,QAAI,MAAM;AAAA,EACZ;AAOA,GAAC,UAAU,WAAW,YAAY,EAAE,QAAQ,CAAC,WAAW;AACtD,YAAQ,GAAG,QAAe,YAAY;AACpC,UAAI;AACF,YAAI,KAAK;AACP,gBAAM,IAAI,SAAS;AAAA,QACrB,OAAO;AACL,gBAAM,QAAQ,IAAI,sBAAsB,IAAI,OAAK,EAAE,SAAS,CAAC,CAAC;AAAA,QAChE;AAAA,MACF,SAAS,OAAO;AAEd,gBAAQ,MAAM,0CAA0C,KAAK;AAAA,MAC/D;AAEA,UAAI,WAAW,cAAc;AAC3B,gBAAQ,KAAK;AAAA,MACf;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../src/client-node.ts"],"sourcesContent":["import { SpanProcessor } from \"@opentelemetry/sdk-trace-base\";\nimport { getApiKey, getEndpoint, setConfig, SetupOptions } from \"./client\";\nimport { NodeSDK } from '@opentelemetry/sdk-node';\nimport { resourceFromAttributes } from \"@opentelemetry/resources\";\nimport { AsyncLocalStorageContextManager } from \"@opentelemetry/context-async-hooks\";\nimport { W3CTraceContextPropagator } from \"@opentelemetry/core\";\nimport { version } from \"../package.json\";\nimport * as intSemconv from \"./observability/semconv\";\nimport { addSpanProcessorToExistingTracerProvider, isOtelInitialized, mergeResourceIntoExistingTracerProvider } from \"./client-shared\";\nimport { FilterableBatchSpanProcessor } from \"./observability\";\nimport { LangWatchExporter } from \"./observability/exporters\";\n\nlet managedSpanProcessors: SpanProcessor[] = [];\nlet nodeSetupCalled: boolean = false;\nlet sdk: NodeSDK | null = null;\n\nexport async function setupLangWatch(options: SetupOptions = {}) {\n if (nodeSetupCalled) {\n throw new Error(\"LangWatch setup has already been called in this process. Setup can only be called once, if you need to modify OpenTelemetry setup then use the OpenTelemetry API directly.\");\n }\n\n setConfig(options);\n nodeSetupCalled = true;\n\n if (options.skipOpenTelemetrySetup) return;\n\n const endpointURL = new URL(\"/api/otel/v1/traces\", getEndpoint());\n const langwatchSpanProcessor = new FilterableBatchSpanProcessor(\n new LangWatchExporter(getApiKey(), endpointURL.toString()),\n options.otelSpanProcessingExcludeRules ?? [],\n );\n\n const langwatchResource = resourceFromAttributes({\n ...options.baseAttributes,\n [intSemconv.ATTR_LANGWATCH_SDK_LANGUAGE]: \"typescript-node\",\n [intSemconv.ATTR_LANGWATCH_SDK_VERSION]: version,\n [intSemconv.ATTR_LANGWATCH_SDK_NAME]: \"langwatch-observability-sdk\",\n });\n\n if (isOtelInitialized()) {\n mergeResourceIntoExistingTracerProvider(langwatchResource);\n addSpanProcessorToExistingTracerProvider(langwatchSpanProcessor);\n for (const spanProcessor of options.otelSpanProcessors ?? []) {\n addSpanProcessorToExistingTracerProvider(spanProcessor);\n }\n\n managedSpanProcessors = [langwatchSpanProcessor];\n } else {\n sdk = new NodeSDK({\n resource: langwatchResource,\n spanProcessors: [langwatchSpanProcessor, ...(options.otelSpanProcessors ?? [])],\n contextManager: new AsyncLocalStorageContextManager(),\n textMapPropagator: new W3CTraceContextPropagator(),\n });\n\n sdk.start();\n }\n\n // If we detect interrupt, termination, or test beforeExit signals, then we attempt\n // to shutdown.\n // - If an SDK exists, then we just attempt to shutdown the SDK.\n // - If no SDK exists, then we attempt to shutdown ONLY the SpanProcessors that are\n // managed by this LangWatch SDK.\n [\"SIGINT\", \"SIGTERM\", \"beforeExit\"].forEach((signal) => {\n process.on(signal as any, async () => {\n try {\n if (sdk) {\n await sdk.shutdown();\n } else {\n await Promise.all(managedSpanProcessors.map(p => p.shutdown()));\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Error shutting down OpenTelemetry SDK:\", error);\n }\n\n if (signal !== \"beforeExit\") {\n process.exit();\n }\n });\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,SAAS,eAAe;AACxB,SAAS,8BAA8B;AACvC,SAAS,uCAAuC;AAChD,SAAS,iCAAiC;AAO1C,IAAI,wBAAyC,CAAC;AAC9C,IAAI,kBAA2B;AAC/B,IAAI,MAAsB;AAE1B,eAAsB,eAAe,UAAwB,CAAC,GAAG;AAhBjE;AAiBE,MAAI,iBAAiB;AACnB,UAAM,IAAI,MAAM,4KAA4K;AAAA,EAC9L;AAEA,YAAU,OAAO;AACjB,oBAAkB;AAElB,MAAI,QAAQ,uBAAwB;AAEpC,QAAM,cAAc,IAAI,IAAI,uBAAuB,YAAY,CAAC;AAChE,QAAM,yBAAyB,IAAI;AAAA,IACjC,IAAI,kBAAkB,UAAU,GAAG,YAAY,SAAS,CAAC;AAAA,KACzD,aAAQ,mCAAR,YAA0C,CAAC;AAAA,EAC7C;AAEA,QAAM,oBAAoB,uBAAuB,iCAC5C,QAAQ,iBADoC;AAAA,IAE/C,CAAY,2BAA2B,GAAG;AAAA,IAC1C,CAAY,0BAA0B,GAAG;AAAA,IACzC,CAAY,uBAAuB,GAAG;AAAA,EACxC,EAAC;AAED,MAAI,kBAAkB,GAAG;AACvB,4CAAwC,iBAAiB;AACzD,6CAAyC,sBAAsB;AAC/D,eAAW,kBAAiB,aAAQ,uBAAR,YAA8B,CAAC,GAAG;AAC5D,+CAAyC,aAAa;AAAA,IACxD;AAEA,4BAAwB,CAAC,sBAAsB;AAAA,EACjD,OAAO;AACL,UAAM,IAAI,QAAQ;AAAA,MAChB,UAAU;AAAA,MACV,gBAAgB,CAAC,wBAAwB,IAAI,aAAQ,uBAAR,YAA8B,CAAC,CAAE;AAAA,MAC9E,gBAAgB,IAAI,gCAAgC;AAAA,MACpD,mBAAmB,IAAI,0BAA0B;AAAA,IACnD,CAAC;AAED,QAAI,MAAM;AAAA,EACZ;AAOA,GAAC,UAAU,WAAW,YAAY,EAAE,QAAQ,CAAC,WAAW;AACtD,YAAQ,GAAG,QAAe,YAAY;AACpC,UAAI;AACF,YAAI,KAAK;AACP,gBAAM,IAAI,SAAS;AAAA,QACrB,OAAO;AACL,gBAAM,QAAQ,IAAI,sBAAsB,IAAI,OAAK,EAAE,SAAS,CAAC,CAAC;AAAA,QAChE;AAAA,MACF,SAAS,OAAO;AAEd,gBAAQ,MAAM,0CAA0C,KAAK;AAAA,MAC/D;AAEA,UAAI,WAAW,cAAc;AAC3B,gBAAQ,KAAK;AAAA,MACf;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACH;","names":[]}
@@ -0,0 +1,70 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
+
3
+ var _chunkHJU67C7Hjs = require('./chunk-HJU67C7H.js');
4
+
5
+
6
+ var _chunk2JU376G7js = require('./chunk-2JU376G7.js');
7
+
8
+
9
+ var _chunkF6E4XQQUjs = require('./chunk-F6E4XQQU.js');
10
+ require('./chunk-HA3LI5IK.js');
11
+ require('./chunk-SMXXAVMB.js');
12
+ require('./chunk-FJLK5CFL.js');
13
+
14
+ // src/cli/commands/create.ts
15
+ var _fs = require('fs'); var fs = _interopRequireWildcard(_fs);
16
+ var _path = require('path'); var path = _interopRequireWildcard(_path);
17
+ var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
18
+ var createCommand = async (name, options) => {
19
+ try {
20
+ if (!name || name.trim() === "") {
21
+ console.error(_chalk2.default.red("Error: Prompt name cannot be empty"));
22
+ process.exit(1);
23
+ }
24
+ _chunkF6E4XQQUjs.checkApiKey.call(void 0, );
25
+ await _chunkHJU67C7Hjs.ensureProjectInitialized.call(void 0, );
26
+ const promptPath = path.join(process.cwd(), "prompts", `${name}.prompt.yaml`);
27
+ if (fs.existsSync(promptPath)) {
28
+ console.error(_chalk2.default.red(`Error: Prompt file already exists at ${promptPath}`));
29
+ process.exit(1);
30
+ }
31
+ const promptsDir = path.dirname(promptPath);
32
+ if (!fs.existsSync(promptsDir)) {
33
+ fs.mkdirSync(promptsDir, { recursive: true });
34
+ }
35
+ const defaultContent = `model: openai/gpt-4o-mini
36
+ modelParameters:
37
+ temperature: 0.7
38
+ messages:
39
+ - role: system
40
+ content: You are a helpful assistant.
41
+ - role: user
42
+ content: "{{input}}"
43
+ `;
44
+ fs.writeFileSync(promptPath, defaultContent, "utf8");
45
+ const promptsConfig = _chunk2JU376G7js.FileManager.loadPromptsConfig();
46
+ const relativePath = path.relative(process.cwd(), promptPath);
47
+ promptsConfig.prompts[name] = `file:${relativePath}`;
48
+ _chunk2JU376G7js.FileManager.savePromptsConfig(promptsConfig);
49
+ const lock = _chunk2JU376G7js.FileManager.loadPromptsLock();
50
+ lock.prompts[name] = {
51
+ version: 0,
52
+ // Local files start at version 0
53
+ versionId: "local",
54
+ materialized: relativePath
55
+ // Store the original file path
56
+ };
57
+ _chunk2JU376G7js.FileManager.savePromptsLock(lock);
58
+ const displayPath = `./${relativePath}`;
59
+ console.log(_chalk2.default.green(`\u2713 Created prompt file: ${_chalk2.default.cyan(displayPath)}`));
60
+ console.log(_chalk2.default.gray(` Edit this file and then run:`));
61
+ console.log(_chalk2.default.cyan(` langwatch prompt sync`));
62
+ } catch (error) {
63
+ console.error(_chalk2.default.red("Unexpected error:"), error instanceof Error ? error.message : error);
64
+ process.exit(1);
65
+ }
66
+ };
67
+
68
+
69
+ exports.createCommand = createCommand;
70
+ //# sourceMappingURL=create-G5MTGOOH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/create-G5MTGOOH.js","../src/cli/commands/create.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACA;ACbA,+DAAoB;AACpB,uEAAsB;AACtB,4EAAkB;AASX,IAAM,cAAA,EAAgB,MAAA,CAAO,IAAA,EAAc,OAAA,EAAA,GAA0C;AAC1F,EAAA,IAAI;AAEF,IAAA,GAAA,CAAI,CAAC,KAAA,GAAQ,IAAA,CAAK,IAAA,CAAK,EAAA,IAAM,EAAA,EAAI;AAC/B,MAAA,OAAA,CAAQ,KAAA,CAAM,eAAA,CAAM,GAAA,CAAI,oCAAoC,CAAC,CAAA;AAC7D,MAAA,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA;AAAA,IAChB;AAGA,IAAA,0CAAA,CAAY;AAGZ,IAAA,MAAM,uDAAA,CAAyB;AAG/B,IAAA,MAAM,WAAA,EAAkB,IAAA,CAAA,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAG,SAAA,EAAW,CAAA,EAAA;AAExB,IAAA;AACL,MAAA;AACV,MAAA;AAChB,IAAA;AAG0C,IAAA;AACV,IAAA;AACc,MAAA;AAC9C,IAAA;AAGuB,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAW4B,IAAA;AAGC,IAAA;AACF,IAAA;AACA,IAAA;AACP,IAAA;AAGF,IAAA;AACpB,IAAA;AACV,MAAA;AAAA;AACE,MAAA;AACG,MAAA;AAAA;AAChB,IAAA;AACgC,IAAA;AAEK,IAAA;AACa,IAAA;AACM,IAAA;AACP,IAAA;AAEnC,EAAA;AACgC,IAAA;AAChC,IAAA;AAChB,EAAA;AACF;ADX4D;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/create-G5MTGOOH.js","sourcesContent":[null,"import * as fs from \"fs\";\nimport * as path from \"path\";\nimport chalk from \"chalk\";\nimport { FileManager } from \"../utils/fileManager\";\nimport { checkApiKey } from \"../utils/apiKey\";\nimport { ensureProjectInitialized } from \"../utils/init\";\n\ninterface CreateOptions {\n // Future options can be added here\n}\n\nexport const createCommand = async (name: string, options: CreateOptions): Promise<void> => {\n try {\n // Validate prompt name\n if (!name || name.trim() === \"\") {\n console.error(chalk.red(\"Error: Prompt name cannot be empty\"));\n process.exit(1);\n }\n\n // Check API key before doing anything else\n checkApiKey();\n\n // Ensure project is initialized\n await ensureProjectInitialized();\n\n // Check if file already exists\n const promptPath = path.join(process.cwd(), \"prompts\", `${name}.prompt.yaml`);\n\n if (fs.existsSync(promptPath)) {\n console.error(chalk.red(`Error: Prompt file already exists at ${promptPath}`));\n process.exit(1);\n }\n\n // Create prompts directory if it doesn't exist\n const promptsDir = path.dirname(promptPath);\n if (!fs.existsSync(promptsDir)) {\n fs.mkdirSync(promptsDir, { recursive: true });\n }\n\n // Default prompt content\n const defaultContent = `model: openai/gpt-4o-mini\nmodelParameters:\n temperature: 0.7\nmessages:\n - role: system\n content: You are a helpful assistant.\n - role: user\n content: \"{{input}}\"\n`;\n\n // Write the file\n fs.writeFileSync(promptPath, defaultContent, \"utf8\");\n\n // Add to prompts.json as a file: dependency\n const promptsConfig = FileManager.loadPromptsConfig();\n const relativePath = path.relative(process.cwd(), promptPath);\n promptsConfig.prompts[name] = `file:${relativePath}`;\n FileManager.savePromptsConfig(promptsConfig);\n\n // Update lock file\n const lock = FileManager.loadPromptsLock();\n lock.prompts[name] = {\n version: 0, // Local files start at version 0\n versionId: \"local\",\n materialized: relativePath, // Store the original file path\n };\n FileManager.savePromptsLock(lock);\n\n const displayPath = `./${relativePath}`;\n console.log(chalk.green(`✓ Created prompt file: ${chalk.cyan(displayPath)}`));\n console.log(chalk.gray(` Edit this file and then run:`));\n console.log(chalk.cyan(` langwatch prompt sync`));\n\n } catch (error) {\n console.error(chalk.red(\"Unexpected error:\"), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n};"]}