@nirmos/sdk 0.1.0

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 (136) hide show
  1. package/README.md +62 -0
  2. package/dist/cjs/client.js +61 -0
  3. package/dist/cjs/client.js.map +1 -0
  4. package/dist/cjs/core/errors.js +143 -0
  5. package/dist/cjs/core/errors.js.map +1 -0
  6. package/dist/cjs/core/metadata.js +104 -0
  7. package/dist/cjs/core/metadata.js.map +1 -0
  8. package/dist/cjs/core/transport.js +276 -0
  9. package/dist/cjs/core/transport.js.map +1 -0
  10. package/dist/cjs/core/types.js +3 -0
  11. package/dist/cjs/core/types.js.map +1 -0
  12. package/dist/cjs/gateway/chat-stream.js +262 -0
  13. package/dist/cjs/gateway/chat-stream.js.map +1 -0
  14. package/dist/cjs/gateway/chat.js +102 -0
  15. package/dist/cjs/gateway/chat.js.map +1 -0
  16. package/dist/cjs/gateway/embeddings.js +33 -0
  17. package/dist/cjs/gateway/embeddings.js.map +1 -0
  18. package/dist/cjs/gateway/gateway.js +18 -0
  19. package/dist/cjs/gateway/gateway.js.map +1 -0
  20. package/dist/cjs/gateway/images.js +36 -0
  21. package/dist/cjs/gateway/images.js.map +1 -0
  22. package/dist/cjs/gateway/mappers.js +184 -0
  23. package/dist/cjs/gateway/mappers.js.map +1 -0
  24. package/dist/cjs/gateway/types.js +3 -0
  25. package/dist/cjs/gateway/types.js.map +1 -0
  26. package/dist/cjs/index.js +25 -0
  27. package/dist/cjs/index.js.map +1 -0
  28. package/dist/cjs/package.json +3 -0
  29. package/dist/cjs/prompts/cache.js +48 -0
  30. package/dist/cjs/prompts/cache.js.map +1 -0
  31. package/dist/cjs/prompts/mappers.js +242 -0
  32. package/dist/cjs/prompts/mappers.js.map +1 -0
  33. package/dist/cjs/prompts/prompts.js +121 -0
  34. package/dist/cjs/prompts/prompts.js.map +1 -0
  35. package/dist/cjs/prompts/render.js +86 -0
  36. package/dist/cjs/prompts/render.js.map +1 -0
  37. package/dist/cjs/prompts/types.js +3 -0
  38. package/dist/cjs/prompts/types.js.map +1 -0
  39. package/dist/cjs/prompts/versions.js +51 -0
  40. package/dist/cjs/prompts/versions.js.map +1 -0
  41. package/dist/esm/client.d.ts +28 -0
  42. package/dist/esm/client.d.ts.map +1 -0
  43. package/dist/esm/client.js +58 -0
  44. package/dist/esm/client.js.map +1 -0
  45. package/dist/esm/core/errors.d.ts +72 -0
  46. package/dist/esm/core/errors.d.ts.map +1 -0
  47. package/dist/esm/core/errors.js +125 -0
  48. package/dist/esm/core/errors.js.map +1 -0
  49. package/dist/esm/core/metadata.d.ts +11 -0
  50. package/dist/esm/core/metadata.d.ts.map +1 -0
  51. package/dist/esm/core/metadata.js +95 -0
  52. package/dist/esm/core/metadata.js.map +1 -0
  53. package/dist/esm/core/transport.d.ts +28 -0
  54. package/dist/esm/core/transport.d.ts.map +1 -0
  55. package/dist/esm/core/transport.js +272 -0
  56. package/dist/esm/core/transport.js.map +1 -0
  57. package/dist/esm/core/types.d.ts +43 -0
  58. package/dist/esm/core/types.d.ts.map +1 -0
  59. package/dist/esm/core/types.js +2 -0
  60. package/dist/esm/core/types.js.map +1 -0
  61. package/dist/esm/gateway/chat-stream.d.ts +9 -0
  62. package/dist/esm/gateway/chat-stream.d.ts.map +1 -0
  63. package/dist/esm/gateway/chat-stream.js +258 -0
  64. package/dist/esm/gateway/chat-stream.js.map +1 -0
  65. package/dist/esm/gateway/chat.d.ts +12 -0
  66. package/dist/esm/gateway/chat.d.ts.map +1 -0
  67. package/dist/esm/gateway/chat.js +98 -0
  68. package/dist/esm/gateway/chat.js.map +1 -0
  69. package/dist/esm/gateway/embeddings.d.ts +9 -0
  70. package/dist/esm/gateway/embeddings.d.ts.map +1 -0
  71. package/dist/esm/gateway/embeddings.js +29 -0
  72. package/dist/esm/gateway/embeddings.js.map +1 -0
  73. package/dist/esm/gateway/gateway.d.ts +12 -0
  74. package/dist/esm/gateway/gateway.d.ts.map +1 -0
  75. package/dist/esm/gateway/gateway.js +14 -0
  76. package/dist/esm/gateway/gateway.js.map +1 -0
  77. package/dist/esm/gateway/images.d.ts +9 -0
  78. package/dist/esm/gateway/images.d.ts.map +1 -0
  79. package/dist/esm/gateway/images.js +32 -0
  80. package/dist/esm/gateway/images.js.map +1 -0
  81. package/dist/esm/gateway/mappers.d.ts +11 -0
  82. package/dist/esm/gateway/mappers.d.ts.map +1 -0
  83. package/dist/esm/gateway/mappers.js +174 -0
  84. package/dist/esm/gateway/mappers.js.map +1 -0
  85. package/dist/esm/gateway/types.d.ts +168 -0
  86. package/dist/esm/gateway/types.d.ts.map +1 -0
  87. package/dist/esm/gateway/types.js +2 -0
  88. package/dist/esm/gateway/types.js.map +1 -0
  89. package/dist/esm/index.d.ts +8 -0
  90. package/dist/esm/index.d.ts.map +1 -0
  91. package/dist/esm/index.js +4 -0
  92. package/dist/esm/index.js.map +1 -0
  93. package/dist/esm/prompts/cache.d.ts +13 -0
  94. package/dist/esm/prompts/cache.d.ts.map +1 -0
  95. package/dist/esm/prompts/cache.js +44 -0
  96. package/dist/esm/prompts/cache.js.map +1 -0
  97. package/dist/esm/prompts/mappers.d.ts +8 -0
  98. package/dist/esm/prompts/mappers.d.ts.map +1 -0
  99. package/dist/esm/prompts/mappers.js +235 -0
  100. package/dist/esm/prompts/mappers.js.map +1 -0
  101. package/dist/esm/prompts/prompts.d.ts +17 -0
  102. package/dist/esm/prompts/prompts.d.ts.map +1 -0
  103. package/dist/esm/prompts/prompts.js +117 -0
  104. package/dist/esm/prompts/prompts.js.map +1 -0
  105. package/dist/esm/prompts/render.d.ts +3 -0
  106. package/dist/esm/prompts/render.d.ts.map +1 -0
  107. package/dist/esm/prompts/render.js +83 -0
  108. package/dist/esm/prompts/render.js.map +1 -0
  109. package/dist/esm/prompts/types.d.ts +119 -0
  110. package/dist/esm/prompts/types.d.ts.map +1 -0
  111. package/dist/esm/prompts/types.js +2 -0
  112. package/dist/esm/prompts/types.js.map +1 -0
  113. package/dist/esm/prompts/versions.d.ts +12 -0
  114. package/dist/esm/prompts/versions.d.ts.map +1 -0
  115. package/dist/esm/prompts/versions.js +47 -0
  116. package/dist/esm/prompts/versions.js.map +1 -0
  117. package/package.json +50 -0
  118. package/src/client.ts +89 -0
  119. package/src/core/errors.ts +160 -0
  120. package/src/core/metadata.ts +141 -0
  121. package/src/core/transport.ts +331 -0
  122. package/src/core/types.ts +51 -0
  123. package/src/gateway/chat-stream.ts +307 -0
  124. package/src/gateway/chat.ts +134 -0
  125. package/src/gateway/embeddings.ts +44 -0
  126. package/src/gateway/gateway.ts +17 -0
  127. package/src/gateway/images.ts +41 -0
  128. package/src/gateway/mappers.ts +234 -0
  129. package/src/gateway/types.ts +206 -0
  130. package/src/index.ts +83 -0
  131. package/src/prompts/cache.ts +50 -0
  132. package/src/prompts/mappers.ts +318 -0
  133. package/src/prompts/prompts.ts +188 -0
  134. package/src/prompts/render.ts +117 -0
  135. package/src/prompts/types.ts +148 -0
  136. package/src/prompts/versions.ts +80 -0
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Prompts = void 0;
4
+ const cache_js_1 = require("./cache.js");
5
+ const mappers_js_1 = require("./mappers.js");
6
+ const render_js_1 = require("./render.js");
7
+ const versions_js_1 = require("./versions.js");
8
+ class Prompts {
9
+ versions;
10
+ #transport;
11
+ #cache;
12
+ #inflight = new Map();
13
+ constructor(transport, config = {}) {
14
+ this.#transport = transport;
15
+ if (config !== false && config.enabled !== false) {
16
+ this.#cache = new cache_js_1.MemoryCache(positiveInteger(config.maxEntries, 100), nonNegativeNumber(config.ttlMs, 60_000));
17
+ }
18
+ this.versions = new versions_js_1.PromptVersions(transport, () => this.clearCache());
19
+ }
20
+ async create(params, options) {
21
+ const { data, response } = await this.#transport.request({
22
+ method: "POST",
23
+ path: "/v1/prompts",
24
+ body: (0, mappers_js_1.toWirePromptCreate)(params),
25
+ options,
26
+ });
27
+ this.clearCache();
28
+ return (0, mappers_js_1.normalizePrompt)(data, response);
29
+ }
30
+ async retrieve(identifier, options = {}) {
31
+ const { version = "active", cache = "default", ...requestOptions } = options;
32
+ const key = cacheKey(identifier, version);
33
+ if (cache === "default") {
34
+ const cached = this.#cache?.get(key);
35
+ if (cached)
36
+ return cached;
37
+ const pending = this.#inflight.get(key);
38
+ if (pending)
39
+ return pending;
40
+ }
41
+ const pending = this.#retrieveFromApi(identifier, version, requestOptions).then((prompt) => {
42
+ if (cache !== "no-store")
43
+ this.#cache?.set(key, prompt);
44
+ return prompt;
45
+ });
46
+ if (cache === "default")
47
+ this.#inflight.set(key, pending);
48
+ try {
49
+ return await pending;
50
+ }
51
+ finally {
52
+ this.#inflight.delete(key);
53
+ }
54
+ }
55
+ async retrieveActive(identifier, options = {}) {
56
+ return this.retrieve(identifier, { ...options, version: "active" });
57
+ }
58
+ async retrieveLatest(identifier, options = {}) {
59
+ return this.retrieve(identifier, { ...options, version: "latest" });
60
+ }
61
+ async update(identifier, params, options) {
62
+ const { data, response } = await this.#transport.request({
63
+ method: "PATCH",
64
+ path: `/v1/prompts/${encodeURIComponent(identifier)}`,
65
+ body: {
66
+ name: params.name,
67
+ slug: params.slug,
68
+ description: params.description,
69
+ metadata: params.metadata,
70
+ tags: params.tags,
71
+ folder: params.folder,
72
+ status: params.status,
73
+ },
74
+ options,
75
+ });
76
+ this.clearCache();
77
+ return (0, mappers_js_1.normalizePrompt)(data, response);
78
+ }
79
+ async render(promptOrReference, values = {}, options = {}) {
80
+ const prompt = "content" in promptOrReference
81
+ ? promptOrReference
82
+ : await this.retrieve(promptOrReference.id, {
83
+ version: promptOrReference.version,
84
+ cache: promptOrReference.cache,
85
+ });
86
+ return (0, render_js_1.renderPrompt)(prompt, values, options);
87
+ }
88
+ clearCache(identifier) {
89
+ if (!identifier) {
90
+ this.#cache?.clear();
91
+ return;
92
+ }
93
+ const encoded = encodeURIComponent(identifier);
94
+ this.#cache?.deleteMatching((key) => key.startsWith(`${encoded}:`) || key.includes(`:${encoded}:`));
95
+ }
96
+ async #retrieveFromApi(identifier, version, options) {
97
+ const encoded = encodeURIComponent(identifier);
98
+ const { data, response } = await this.#transport.request({
99
+ method: "GET",
100
+ path: `/v1/prompts/${encoded}`,
101
+ query: version === "active" ? undefined : { version },
102
+ options,
103
+ });
104
+ return (0, mappers_js_1.normalizePrompt)(data, response);
105
+ }
106
+ }
107
+ exports.Prompts = Prompts;
108
+ function cacheKey(identifier, version) {
109
+ return `${encodeURIComponent(identifier)}:${version}`;
110
+ }
111
+ function positiveInteger(value, fallback) {
112
+ return value !== undefined && Number.isInteger(value) && value > 0
113
+ ? value
114
+ : fallback;
115
+ }
116
+ function nonNegativeNumber(value, fallback) {
117
+ return value !== undefined && Number.isFinite(value) && value >= 0
118
+ ? value
119
+ : fallback;
120
+ }
121
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/prompts/prompts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderPrompt = renderPrompt;
4
+ const errors_js_1 = require("../core/errors.js");
5
+ const PLACEHOLDER = /\{\{\s*([a-zA-Z][a-zA-Z0-9_.-]*)\s*\}\}/g;
6
+ function renderPrompt(prompt, values = {}, options = {}) {
7
+ const resolved = resolveVariables(prompt.variables, values);
8
+ const sourceMessages = prompt.content.type === "chat"
9
+ ? prompt.content.messages
10
+ : [
11
+ {
12
+ role: prompt.content.role ?? "user",
13
+ content: prompt.content.text,
14
+ },
15
+ ];
16
+ const messages = sourceMessages.map((message) => ({
17
+ ...message,
18
+ content: typeof message.content === "string"
19
+ ? interpolate(message.content, resolved, options)
20
+ : message.content.map((part) => {
21
+ if (part.type === "text") {
22
+ return {
23
+ ...part,
24
+ text: interpolate(part.text, resolved, options),
25
+ };
26
+ }
27
+ if (part.type === "image") {
28
+ return {
29
+ ...part,
30
+ url: interpolate(part.url, resolved, options),
31
+ };
32
+ }
33
+ return part;
34
+ }),
35
+ }));
36
+ return {
37
+ promptId: prompt.id,
38
+ promptVersion: prompt.version.number,
39
+ messages,
40
+ variables: resolved,
41
+ };
42
+ }
43
+ function resolveVariables(definitions, supplied) {
44
+ const resolved = { ...supplied };
45
+ const missing = [];
46
+ for (const variable of definitions) {
47
+ const value = resolved[variable.name];
48
+ if (value === undefined && variable.default !== undefined) {
49
+ resolved[variable.name] = variable.default;
50
+ }
51
+ else if (value === undefined && variable.required) {
52
+ missing.push(variable.name);
53
+ }
54
+ }
55
+ if (missing.length > 0) {
56
+ throw new errors_js_1.PromptRenderError(`Missing required prompt variables: ${missing.join(", ")}.`, missing);
57
+ }
58
+ return resolved;
59
+ }
60
+ function interpolate(template, values, options) {
61
+ const unresolved = new Set();
62
+ const result = template.replace(PLACEHOLDER, (placeholder, name) => {
63
+ const value = values[name];
64
+ if (value === undefined) {
65
+ unresolved.add(name);
66
+ return placeholder;
67
+ }
68
+ return stringify(value);
69
+ });
70
+ if (unresolved.size > 0 && !options.allowUnresolved) {
71
+ const names = [...unresolved];
72
+ throw new errors_js_1.PromptRenderError(`Unresolved prompt variables: ${names.join(", ")}.`, names);
73
+ }
74
+ return result;
75
+ }
76
+ function stringify(value) {
77
+ if (value === null)
78
+ return "null";
79
+ if (typeof value === "string")
80
+ return value;
81
+ if (typeof value === "number" || typeof value === "boolean") {
82
+ return String(value);
83
+ }
84
+ return JSON.stringify(value);
85
+ }
86
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/prompts/render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/prompts/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PromptVersions = void 0;
4
+ const mappers_js_1 = require("./mappers.js");
5
+ class PromptVersions {
6
+ #transport;
7
+ #invalidate;
8
+ constructor(transport, invalidate) {
9
+ this.#transport = transport;
10
+ this.#invalidate = invalidate;
11
+ }
12
+ async create(identifier, params, options) {
13
+ const { data } = await this.#transport.request({
14
+ method: "POST",
15
+ path: `/v1/prompts/${encodeURIComponent(identifier)}/versions`,
16
+ body: (0, mappers_js_1.toWireVersionCreate)(params),
17
+ options,
18
+ });
19
+ this.#invalidate();
20
+ return (0, mappers_js_1.normalizeVersion)(data);
21
+ }
22
+ async retrieve(identifier, version, options) {
23
+ const { data } = await this.#transport.request({
24
+ method: "GET",
25
+ path: `/v1/prompts/${encodeURIComponent(identifier)}/versions/${version}`,
26
+ options,
27
+ });
28
+ return (0, mappers_js_1.normalizeVersion)(data);
29
+ }
30
+ async list(identifier, options = {}) {
31
+ const { limit, cursor, ...requestOptions } = options;
32
+ const { data } = await this.#transport.request({
33
+ method: "GET",
34
+ path: `/v1/prompts/${encodeURIComponent(identifier)}/versions`,
35
+ query: { limit, cursor },
36
+ options: requestOptions,
37
+ });
38
+ return (0, mappers_js_1.normalizeVersionPage)(data);
39
+ }
40
+ async activate(identifier, version, options) {
41
+ const { data } = await this.#transport.request({
42
+ method: "POST",
43
+ path: `/v1/prompts/${encodeURIComponent(identifier)}/versions/${version}/activate`,
44
+ options,
45
+ });
46
+ this.#invalidate();
47
+ return (0, mappers_js_1.normalizeVersion)(data);
48
+ }
49
+ }
50
+ exports.PromptVersions = PromptVersions;
51
+ //# sourceMappingURL=versions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../src/prompts/versions.ts"],"names":[],"mappings":";;;AAEA,6CAIsB;AAStB,MAAa,cAAc;IAChB,UAAU,CAAgB;IAC1B,WAAW,CAAa;IAEjC,YAAY,SAAwB,EAAE,UAAsB;QAC1D,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,MAAM,CACV,UAA4B,EAC5B,MAAiC,EACjC,OAAwB;QAExB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAU;YACtD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,eAAe,kBAAkB,CAAC,UAAU,CAAC,WAAW;YAC9D,IAAI,EAAE,IAAA,gCAAmB,EAAC,MAAM,CAAC;YACjC,OAAO;SACR,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,OAAO,IAAA,6BAAgB,EAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,UAA4B,EAC5B,OAAe,EACf,OAAwB;QAExB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAU;YACtD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,eAAe,kBAAkB,CAAC,UAAU,CAAC,aAAa,OAAO,EAAE;YACzE,OAAO;SACR,CAAC,CAAC;QACH,OAAO,IAAA,6BAAgB,EAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,IAAI,CACR,UAA4B,EAC5B,UAAoC,EAAE;QAEtC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,CAAC;QACrD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAU;YACtD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,eAAe,kBAAkB,CAAC,UAAU,CAAC,WAAW;YAC9D,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;YACxB,OAAO,EAAE,cAAc;SACxB,CAAC,CAAC;QACH,OAAO,IAAA,iCAAoB,EAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,UAA4B,EAC5B,OAAe,EACf,OAAwB;QAExB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAU;YACtD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,eAAe,kBAAkB,CAAC,UAAU,CAAC,aAAa,OAAO,WAAW;YAClF,OAAO;SACR,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,OAAO,IAAA,6BAAgB,EAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACF;AAhED,wCAgEC"}
@@ -0,0 +1,28 @@
1
+ import type { HeadersInput } from "./core/types.js";
2
+ import { Gateway } from "./gateway/gateway.js";
3
+ import { Prompts } from "./prompts/prompts.js";
4
+ import type { PromptCacheConfig } from "./prompts/types.js";
5
+ export interface NirmosOptions {
6
+ /** Nirmos API key. Keep this key on trusted servers. */
7
+ apiKey: string;
8
+ /** API origin. Defaults to https://api.nirmos.com. */
9
+ baseUrl?: string;
10
+ /** Default request timeout. Defaults to 60 seconds. Set to 0 to disable. */
11
+ timeoutMs?: number;
12
+ /** Retry count for safe GET requests. Defaults to 2. */
13
+ maxRetries?: number;
14
+ /** Custom fetch implementation for tests or specialized runtimes. */
15
+ fetch?: typeof globalThis.fetch;
16
+ /** Headers added to every request. */
17
+ headers?: HeadersInput;
18
+ /** In-memory managed prompt cache configuration. Set false to disable. */
19
+ promptCache?: PromptCacheConfig | false;
20
+ }
21
+ export declare class Nirmos {
22
+ readonly gateway: Gateway;
23
+ readonly prompts: Prompts;
24
+ constructor(options: NirmosOptions);
25
+ }
26
+ /** Explicit alias for codebases that prefer client-suffixed class names. */
27
+ export { Nirmos as NirmosClient };
28
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,sCAAsC;IACtC,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,iBAAiB,GAAG,KAAK,CAAC;CACzC;AAED,qBAAa,MAAM;IACjB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;gBAEd,OAAO,EAAE,aAAa;CAcnC;AAED,4EAA4E;AAC5E,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { ConfigurationError } from "./core/errors.js";
2
+ import { HttpTransport } from "./core/transport.js";
3
+ import { Gateway } from "./gateway/gateway.js";
4
+ import { Prompts } from "./prompts/prompts.js";
5
+ export class Nirmos {
6
+ gateway;
7
+ prompts;
8
+ constructor(options) {
9
+ validateOptions(options);
10
+ const transport = new HttpTransport({
11
+ apiKey: options.apiKey,
12
+ baseUrl: normalizeBaseUrl(options.baseUrl ?? "https://api.nirmos.com"),
13
+ timeoutMs: nonNegative(options.timeoutMs, 60_000),
14
+ maxRetries: nonNegativeInteger(options.maxRetries, 2),
15
+ fetch: options.fetch ?? globalThis.fetch,
16
+ headers: options.headers,
17
+ });
18
+ this.prompts = new Prompts(transport, options.promptCache);
19
+ this.gateway = new Gateway(transport, this.prompts);
20
+ }
21
+ }
22
+ /** Explicit alias for codebases that prefer client-suffixed class names. */
23
+ export { Nirmos as NirmosClient };
24
+ function validateOptions(options) {
25
+ if (!options || typeof options !== "object") {
26
+ throw configError("Nirmos options are required.");
27
+ }
28
+ if (!options.apiKey || !options.apiKey.trim()) {
29
+ throw configError("Nirmos apiKey is required.");
30
+ }
31
+ if (typeof (options.fetch ?? globalThis.fetch) !== "function") {
32
+ throw configError("No fetch implementation found. Provide options.fetch in this runtime.");
33
+ }
34
+ }
35
+ function normalizeBaseUrl(value) {
36
+ let url;
37
+ try {
38
+ url = new URL(value);
39
+ }
40
+ catch {
41
+ throw configError("Nirmos baseUrl must be a valid absolute URL.");
42
+ }
43
+ return url.toString().replace(/\/+$/, "");
44
+ }
45
+ function nonNegative(value, fallback) {
46
+ return value !== undefined && Number.isFinite(value) && value >= 0
47
+ ? value
48
+ : fallback;
49
+ }
50
+ function nonNegativeInteger(value, fallback) {
51
+ return value !== undefined && Number.isInteger(value) && value >= 0
52
+ ? value
53
+ : fallback;
54
+ }
55
+ function configError(message) {
56
+ return new ConfigurationError(message);
57
+ }
58
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAoB/C,MAAM,OAAO,MAAM;IACR,OAAO,CAAU;IACjB,OAAO,CAAU;IAE1B,YAAY,OAAsB;QAChC,eAAe,CAAC,OAAO,CAAC,CAAC;QACzB,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC;YAClC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,OAAO,IAAI,wBAAwB,CAAC;YACtE,SAAS,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;YACjD,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;YACrD,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK;YACxC,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC;CACF;AAED,4EAA4E;AAC5E,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,CAAC;AAElC,SAAS,eAAe,CAAC,OAAsB;IAC7C,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,WAAW,CAAC,8BAA8B,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9C,MAAM,WAAW,CAAC,4BAA4B,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,UAAU,EAAE,CAAC;QAC9D,MAAM,WAAW,CACf,uEAAuE,CACxE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,WAAW,CAAC,8CAA8C,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,WAAW,CAAC,KAAyB,EAAE,QAAgB;IAC9D,OAAO,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;QAChE,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,QAAQ,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAyB,EACzB,QAAgB;IAEhB,OAAO,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;QACjE,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,QAAQ,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,OAAe;IAClC,OAAO,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,72 @@
1
+ import type { RequestMetadata } from "./types.js";
2
+ export interface NirmosErrorOptions {
3
+ cause?: unknown;
4
+ code?: string;
5
+ requestId?: string;
6
+ traceId?: string;
7
+ }
8
+ export declare class NirmosError extends Error {
9
+ readonly code?: string;
10
+ readonly requestId?: string;
11
+ readonly traceId?: string;
12
+ constructor(message: string, options?: NirmosErrorOptions);
13
+ }
14
+ export declare class ConfigurationError extends NirmosError {
15
+ constructor(message: string, options?: NirmosErrorOptions);
16
+ }
17
+ export interface APIErrorOptions extends NirmosErrorOptions {
18
+ status: number;
19
+ retryable?: boolean;
20
+ retryAfterMs?: number;
21
+ details?: unknown;
22
+ metadata?: RequestMetadata;
23
+ headers?: Headers;
24
+ }
25
+ export declare class APIError extends NirmosError {
26
+ readonly status: number;
27
+ readonly retryable: boolean;
28
+ readonly retryAfterMs?: number;
29
+ readonly details?: unknown;
30
+ readonly metadata?: RequestMetadata;
31
+ readonly headers?: Headers;
32
+ constructor(message: string, options: APIErrorOptions);
33
+ }
34
+ export declare class AuthenticationError extends APIError {
35
+ constructor(message: string, options: APIErrorOptions);
36
+ }
37
+ export declare class PermissionDeniedError extends APIError {
38
+ constructor(message: string, options: APIErrorOptions);
39
+ }
40
+ export declare class NotFoundError extends APIError {
41
+ constructor(message: string, options: APIErrorOptions);
42
+ }
43
+ export declare class ConflictError extends APIError {
44
+ constructor(message: string, options: APIErrorOptions);
45
+ }
46
+ export declare class ValidationError extends APIError {
47
+ constructor(message: string, options: APIErrorOptions);
48
+ }
49
+ export declare class RateLimitError extends APIError {
50
+ constructor(message: string, options: APIErrorOptions);
51
+ }
52
+ export declare class ServerError extends APIError {
53
+ constructor(message: string, options: APIErrorOptions);
54
+ }
55
+ export declare class TimeoutError extends NirmosError {
56
+ readonly timeoutMs: number;
57
+ constructor(timeoutMs: number, options?: NirmosErrorOptions);
58
+ }
59
+ export declare class RequestAbortedError extends NirmosError {
60
+ constructor(options?: NirmosErrorOptions);
61
+ }
62
+ export declare class NetworkError extends NirmosError {
63
+ constructor(cause?: unknown);
64
+ }
65
+ export declare class StreamError extends NirmosError {
66
+ constructor(message: string, options?: NirmosErrorOptions);
67
+ }
68
+ export declare class PromptRenderError extends NirmosError {
69
+ readonly missingVariables: readonly string[];
70
+ constructor(message: string, missingVariables?: readonly string[]);
71
+ }
72
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/core/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;gBAEd,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB;CAO9D;AAED,qBAAa,kBAAmB,SAAQ,WAAW;gBACrC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB;CAO9D;AAED,MAAM,WAAW,eAAgB,SAAQ,kBAAkB;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,QAAS,SAAQ,WAAW;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;gBAEf,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe;CAUtD;AAED,qBAAa,mBAAoB,SAAQ,QAAQ;gBACnC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe;CAItD;AAED,qBAAa,qBAAsB,SAAQ,QAAQ;gBACrC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe;CAItD;AAED,qBAAa,aAAc,SAAQ,QAAQ;gBAC7B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe;CAItD;AAED,qBAAa,aAAc,SAAQ,QAAQ;gBAC7B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe;CAItD;AAED,qBAAa,eAAgB,SAAQ,QAAQ;gBAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe;CAItD;AAED,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe;CAItD;AAED,qBAAa,WAAY,SAAQ,QAAQ;gBAC3B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe;CAItD;AAED,qBAAa,YAAa,SAAQ,WAAW;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB;CAQhE;AAED,qBAAa,mBAAoB,SAAQ,WAAW;gBACtC,OAAO,GAAE,kBAAuB;CAO7C;AAED,qBAAa,YAAa,SAAQ,WAAW;gBAC/B,KAAK,CAAC,EAAE,OAAO;CAO5B;AAED,qBAAa,WAAY,SAAQ,WAAW;gBAC9B,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB;CAI9D;AAED,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;gBAEjC,OAAO,EAAE,MAAM,EAAE,gBAAgB,GAAE,SAAS,MAAM,EAAO;CAKtE"}
@@ -0,0 +1,125 @@
1
+ export class NirmosError extends Error {
2
+ code;
3
+ requestId;
4
+ traceId;
5
+ constructor(message, options = {}) {
6
+ super(message, { cause: options.cause });
7
+ this.name = "NirmosError";
8
+ this.code = options.code;
9
+ this.requestId = options.requestId;
10
+ this.traceId = options.traceId;
11
+ }
12
+ }
13
+ export class ConfigurationError extends NirmosError {
14
+ constructor(message, options = {}) {
15
+ super(message, {
16
+ ...options,
17
+ code: options.code ?? "SDK_CONFIGURATION_ERROR",
18
+ });
19
+ this.name = "ConfigurationError";
20
+ }
21
+ }
22
+ export class APIError extends NirmosError {
23
+ status;
24
+ retryable;
25
+ retryAfterMs;
26
+ details;
27
+ metadata;
28
+ headers;
29
+ constructor(message, options) {
30
+ super(message, options);
31
+ this.name = "APIError";
32
+ this.status = options.status;
33
+ this.retryable = options.retryable ?? false;
34
+ this.retryAfterMs = options.retryAfterMs;
35
+ this.details = options.details;
36
+ this.metadata = options.metadata;
37
+ this.headers = options.headers;
38
+ }
39
+ }
40
+ export class AuthenticationError extends APIError {
41
+ constructor(message, options) {
42
+ super(message, options);
43
+ this.name = "AuthenticationError";
44
+ }
45
+ }
46
+ export class PermissionDeniedError extends APIError {
47
+ constructor(message, options) {
48
+ super(message, options);
49
+ this.name = "PermissionDeniedError";
50
+ }
51
+ }
52
+ export class NotFoundError extends APIError {
53
+ constructor(message, options) {
54
+ super(message, options);
55
+ this.name = "NotFoundError";
56
+ }
57
+ }
58
+ export class ConflictError extends APIError {
59
+ constructor(message, options) {
60
+ super(message, options);
61
+ this.name = "ConflictError";
62
+ }
63
+ }
64
+ export class ValidationError extends APIError {
65
+ constructor(message, options) {
66
+ super(message, options);
67
+ this.name = "ValidationError";
68
+ }
69
+ }
70
+ export class RateLimitError extends APIError {
71
+ constructor(message, options) {
72
+ super(message, options);
73
+ this.name = "RateLimitError";
74
+ }
75
+ }
76
+ export class ServerError extends APIError {
77
+ constructor(message, options) {
78
+ super(message, options);
79
+ this.name = "ServerError";
80
+ }
81
+ }
82
+ export class TimeoutError extends NirmosError {
83
+ timeoutMs;
84
+ constructor(timeoutMs, options = {}) {
85
+ super(`Request timed out after ${timeoutMs}ms.`, {
86
+ ...options,
87
+ code: options.code ?? "REQUEST_TIMEOUT",
88
+ });
89
+ this.name = "TimeoutError";
90
+ this.timeoutMs = timeoutMs;
91
+ }
92
+ }
93
+ export class RequestAbortedError extends NirmosError {
94
+ constructor(options = {}) {
95
+ super("Request was aborted.", {
96
+ ...options,
97
+ code: options.code ?? "REQUEST_ABORTED",
98
+ });
99
+ this.name = "RequestAbortedError";
100
+ }
101
+ }
102
+ export class NetworkError extends NirmosError {
103
+ constructor(cause) {
104
+ super("Unable to reach the Nirmos API.", {
105
+ cause,
106
+ code: "NETWORK_ERROR",
107
+ });
108
+ this.name = "NetworkError";
109
+ }
110
+ }
111
+ export class StreamError extends NirmosError {
112
+ constructor(message, options = {}) {
113
+ super(message, { ...options, code: options.code ?? "STREAM_ERROR" });
114
+ this.name = "StreamError";
115
+ }
116
+ }
117
+ export class PromptRenderError extends NirmosError {
118
+ missingVariables;
119
+ constructor(message, missingVariables = []) {
120
+ super(message, { code: "PROMPT_RENDER_ERROR" });
121
+ this.name = "PromptRenderError";
122
+ this.missingVariables = missingVariables;
123
+ }
124
+ }
125
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/core/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { RequestMetadata } from "./types.js";
2
+ type UnknownRecord = Record<string, unknown>;
3
+ export declare function extractMetadata(response: Response, payload?: unknown): RequestMetadata;
4
+ export declare function compactMetadata(metadata: RequestMetadata): RequestMetadata;
5
+ export declare function asUnknownRecord(value: unknown): UnknownRecord;
6
+ export declare function readString(record: UnknownRecord, ...keys: string[]): string | undefined;
7
+ export declare function readNumber(record: UnknownRecord, ...keys: string[]): number | undefined;
8
+ export declare function readBoolean(record: UnknownRecord, ...keys: string[]): boolean | undefined;
9
+ export declare function readArray(record: UnknownRecord, ...keys: string[]): unknown[];
10
+ export {};
11
+ //# sourceMappingURL=metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../src/core/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAoC7C,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,OAAO,GAChB,eAAe,CAgDjB;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,eAAe,GAAG,eAAe,CAI1E;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAE7D;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,aAAa,EACrB,GAAG,IAAI,EAAE,MAAM,EAAE,GAChB,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,aAAa,EACrB,GAAG,IAAI,EAAE,MAAM,EAAE,GAChB,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,aAAa,EACrB,GAAG,IAAI,EAAE,MAAM,EAAE,GAChB,OAAO,GAAG,SAAS,CAMrB;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAM7E"}