@nirmos/sdk 0.2.0 → 0.3.2

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 (93) hide show
  1. package/README.md +81 -44
  2. package/dist/cjs/client.js +112 -20
  3. package/dist/cjs/client.js.map +1 -1
  4. package/dist/cjs/core/errors.js +4 -2
  5. package/dist/cjs/core/errors.js.map +1 -1
  6. package/dist/cjs/core/metadata.js +3 -3
  7. package/dist/cjs/core/metadata.js.map +1 -1
  8. package/dist/cjs/core/transport.js +36 -9
  9. package/dist/cjs/core/transport.js.map +1 -1
  10. package/dist/cjs/index.js +10 -2
  11. package/dist/cjs/index.js.map +1 -1
  12. package/dist/cjs/management/contracts.js +3 -0
  13. package/dist/cjs/management/contracts.js.map +1 -0
  14. package/dist/cjs/management/execution-types.js +3 -0
  15. package/dist/cjs/management/execution-types.js.map +1 -0
  16. package/dist/cjs/management/manifest.js +1551 -0
  17. package/dist/cjs/management/manifest.js.map +1 -0
  18. package/dist/cjs/management/resources.js +199 -0
  19. package/dist/cjs/management/resources.js.map +1 -0
  20. package/dist/cjs/memory/memory.js +68 -0
  21. package/dist/cjs/memory/memory.js.map +1 -0
  22. package/dist/cjs/memory/types.js +3 -0
  23. package/dist/cjs/memory/types.js.map +1 -0
  24. package/dist/cjs/prompts/render.js +12 -4
  25. package/dist/cjs/prompts/render.js.map +1 -1
  26. package/dist/cjs/prompts/variables.js +117 -0
  27. package/dist/cjs/prompts/variables.js.map +1 -0
  28. package/dist/esm/client.d.ts +140 -13
  29. package/dist/esm/client.d.ts.map +1 -1
  30. package/dist/esm/client.js +111 -20
  31. package/dist/esm/client.js.map +1 -1
  32. package/dist/esm/core/errors.d.ts +4 -0
  33. package/dist/esm/core/errors.d.ts.map +1 -1
  34. package/dist/esm/core/errors.js +4 -2
  35. package/dist/esm/core/errors.js.map +1 -1
  36. package/dist/esm/core/metadata.d.ts.map +1 -1
  37. package/dist/esm/core/metadata.js +3 -3
  38. package/dist/esm/core/metadata.js.map +1 -1
  39. package/dist/esm/core/transport.d.ts +9 -2
  40. package/dist/esm/core/transport.d.ts.map +1 -1
  41. package/dist/esm/core/transport.js +36 -9
  42. package/dist/esm/core/transport.js.map +1 -1
  43. package/dist/esm/gateway/types.d.ts +2 -0
  44. package/dist/esm/gateway/types.d.ts.map +1 -1
  45. package/dist/esm/index.d.ts +7 -2
  46. package/dist/esm/index.d.ts.map +1 -1
  47. package/dist/esm/index.js +3 -1
  48. package/dist/esm/index.js.map +1 -1
  49. package/dist/esm/management/contracts.d.ts +30184 -0
  50. package/dist/esm/management/contracts.d.ts.map +1 -0
  51. package/dist/esm/management/contracts.js +2 -0
  52. package/dist/esm/management/contracts.js.map +1 -0
  53. package/dist/esm/management/execution-types.d.ts +246 -0
  54. package/dist/esm/management/execution-types.d.ts.map +1 -0
  55. package/dist/esm/management/execution-types.js +2 -0
  56. package/dist/esm/management/execution-types.js.map +1 -0
  57. package/dist/esm/management/manifest.d.ts +1353 -0
  58. package/dist/esm/management/manifest.d.ts.map +1 -0
  59. package/dist/esm/management/manifest.js +1548 -0
  60. package/dist/esm/management/manifest.js.map +1 -0
  61. package/dist/esm/management/resources.d.ts +290 -0
  62. package/dist/esm/management/resources.d.ts.map +1 -0
  63. package/dist/esm/management/resources.js +196 -0
  64. package/dist/esm/management/resources.js.map +1 -0
  65. package/dist/esm/memory/memory.d.ts +35 -0
  66. package/dist/esm/memory/memory.d.ts.map +1 -0
  67. package/dist/esm/memory/memory.js +64 -0
  68. package/dist/esm/memory/memory.js.map +1 -0
  69. package/dist/esm/memory/types.d.ts +135 -0
  70. package/dist/esm/memory/types.d.ts.map +1 -0
  71. package/dist/esm/memory/types.js +2 -0
  72. package/dist/esm/memory/types.js.map +1 -0
  73. package/dist/esm/prompts/render.js +11 -3
  74. package/dist/esm/prompts/render.js.map +1 -1
  75. package/dist/esm/prompts/variables.d.ts +29 -0
  76. package/dist/esm/prompts/variables.d.ts.map +1 -0
  77. package/dist/esm/prompts/variables.js +108 -0
  78. package/dist/esm/prompts/variables.js.map +1 -0
  79. package/package.json +2 -2
  80. package/src/client.ts +299 -36
  81. package/src/core/errors.ts +8 -2
  82. package/src/core/metadata.ts +3 -12
  83. package/src/core/transport.ts +47 -11
  84. package/src/gateway/types.ts +2 -0
  85. package/src/index.ts +71 -2
  86. package/src/management/contracts.ts +1179 -0
  87. package/src/management/execution-types.ts +10 -0
  88. package/src/management/manifest.ts +1547 -0
  89. package/src/management/resources.ts +198 -0
  90. package/src/memory/memory.ts +108 -0
  91. package/src/memory/types.ts +157 -0
  92. package/src/prompts/render.ts +9 -4
  93. package/src/prompts/variables.ts +156 -0
@@ -20,7 +20,11 @@ import {
20
20
  import type { HeadersInput, RequestOptions } from "./types.js";
21
21
 
22
22
  export interface TransportConfig {
23
- apiKey: string;
23
+ apiKey?: string;
24
+ accessToken?: string;
25
+ credentials?: RequestCredentials;
26
+ runtime?: boolean;
27
+ onError?: (error: APIError) => void;
24
28
  baseUrl: string;
25
29
  timeoutMs: number;
26
30
  maxRetries: number;
@@ -31,7 +35,9 @@ export interface TransportConfig {
31
35
  export interface TransportRequest {
32
36
  method: "GET" | "POST" | "PATCH" | "PUT" | "DELETE";
33
37
  path: string;
34
- query?: Readonly<Record<string, string | number | boolean | undefined>>;
38
+ query?: Readonly<
39
+ Record<string, string | number | boolean | readonly string[] | undefined>
40
+ >;
35
41
  body?: unknown;
36
42
  options?: RequestOptions;
37
43
  }
@@ -41,7 +47,7 @@ export interface TransportResponse<T> {
41
47
  response: Response;
42
48
  }
43
49
 
44
- const SDK_VERSION = "1.0.0";
50
+ const SDK_VERSION = "0.3.0";
45
51
 
46
52
  export class HttpTransport {
47
53
  readonly #config: TransportConfig;
@@ -55,16 +61,26 @@ export class HttpTransport {
55
61
  const data = await parseResponseBody(response);
56
62
 
57
63
  if (!response.ok) {
58
- throw createApiError(response, data);
64
+ const error = createApiError(response, data);
65
+ this.#config.onError?.(error);
66
+ throw error;
59
67
  }
60
68
 
61
69
  return { data: data as T, response };
62
70
  }
63
71
 
72
+ /** Control-plane and Knowledge envelope decoder; no raw Response at callsites. */
73
+ async data<T>(request: TransportRequest): Promise<T> {
74
+ const { data } = await this.request<{ data: T } | undefined>(request);
75
+ return data?.data as T;
76
+ }
77
+
64
78
  async ensureSuccess(response: Response): Promise<Response> {
65
79
  if (response.ok) return response;
66
80
  const data = await parseResponseBody(response);
67
- throw createApiError(response, data);
81
+ const error = createApiError(response, data);
82
+ this.#config.onError?.(error);
83
+ throw error;
68
84
  }
69
85
 
70
86
  async fetch(request: TransportRequest): Promise<Response> {
@@ -146,7 +162,12 @@ export class HttpTransport {
146
162
  method: request.method,
147
163
  headers: this.#headers(request),
148
164
  body:
149
- request.body === undefined ? undefined : JSON.stringify(request.body),
165
+ request.body === undefined
166
+ ? undefined
167
+ : request.body instanceof FormData
168
+ ? request.body
169
+ : JSON.stringify(request.body),
170
+ credentials: this.#config.credentials,
150
171
  signal: controller.signal,
151
172
  });
152
173
  if (!response.body) return response;
@@ -207,7 +228,9 @@ export class HttpTransport {
207
228
  `${this.#config.baseUrl}/`,
208
229
  );
209
230
  for (const [key, value] of Object.entries(request.query ?? {})) {
210
- if (value !== undefined) url.searchParams.set(key, String(value));
231
+ if (Array.isArray(value))
232
+ for (const item of value) url.searchParams.append(key + "[]", item);
233
+ else if (value !== undefined) url.searchParams.set(key, String(value));
211
234
  }
212
235
  return url.toString();
213
236
  }
@@ -215,14 +238,24 @@ export class HttpTransport {
215
238
  #headers(request: TransportRequest): Headers {
216
239
  const headers = createHeaders(this.#config.headers);
217
240
  headers.set("accept", "application/json");
218
- headers.set("x-api-key", this.#config.apiKey);
219
241
  headers.set("x-nirmos-sdk-version", SDK_VERSION);
220
- if (request.body !== undefined) {
242
+ if (request.body !== undefined && !(request.body instanceof FormData)) {
221
243
  headers.set("content-type", "application/json");
222
244
  }
223
245
  createHeaders(request.options?.headers).forEach((value, key) => {
224
- if (key.toLowerCase() !== "x-api-key") headers.set(key, value);
246
+ if (!["x-api-key", "authorization"].includes(key.toLowerCase()))
247
+ headers.set(key, value);
225
248
  });
249
+ if (this.#config.apiKey) headers.set("x-api-key", this.#config.apiKey);
250
+ if (this.#config.accessToken)
251
+ headers.set("authorization", `Bearer ${this.#config.accessToken}`);
252
+ if (
253
+ this.#config.runtime &&
254
+ !["GET", "HEAD", "OPTIONS"].includes(request.method)
255
+ ) {
256
+ headers.set("x-request-timestamp", String(Date.now()));
257
+ headers.set("x-request-nonce", globalThis.crypto.randomUUID());
258
+ }
226
259
  if (request.options?.idempotencyKey) {
227
260
  headers.set("idempotency-key", request.options.idempotencyKey);
228
261
  }
@@ -261,7 +294,10 @@ function createApiError(response: Response, payload: unknown): APIError {
261
294
  retryAfterMs,
262
295
  details: error.details,
263
296
  metadata,
264
- requestId: metadata.requestId,
297
+ requestId:
298
+ readString(error, "requestId") ??
299
+ readString(root, "requestId") ??
300
+ metadata.requestId,
265
301
  traceId: metadata.traceId,
266
302
  headers: response.headers,
267
303
  };
@@ -167,7 +167,9 @@ export interface EmbeddingCreateParams {
167
167
  user?: string;
168
168
  /** Optional provider override. Omit to use the model's configured default provider. */
169
169
  provider?: string;
170
+ /** @deprecated Embeddings never fall back to another vector space. Requests with this option are rejected. */
170
171
  fallbackModels?: readonly string[];
172
+ /** @deprecated Embeddings require direct model selection. */
171
173
  routingStrategy?: RoutingStrategy;
172
174
  }
173
175
 
package/src/index.ts CHANGED
@@ -1,5 +1,16 @@
1
- export { Nirmos, NirmosClient } from "./client.js";
2
- export type { NirmosOptions } from "./client.js";
1
+ export { Nirmos } from "./client.js";
2
+ export type {
3
+ NirmosOptions,
4
+ NirmosAuth,
5
+ EndpointExecution,
6
+ KnowledgeMatch,
7
+ KnowledgeSearchRequest,
8
+ KnowledgeSearchResponse,
9
+ KnowledgeSearchMode,
10
+ KnowledgeSearchStatus,
11
+ PromptTestRequest,
12
+ PromptTestResponse,
13
+ } from "./client.js";
3
14
 
4
15
  export {
5
16
  APIError,
@@ -81,3 +92,61 @@ export type {
81
92
  RenderedPrompt,
82
93
  TextPromptContent,
83
94
  } from "./prompts/types.js";
95
+
96
+ export type { Requests, Queries, Responses } from "./management/contracts.js";
97
+ export type * from "./management/execution-types.js";
98
+
99
+ export type {
100
+ MemoryPage,
101
+ MemorySpace,
102
+ MemoryPolicy,
103
+ MemoryItem,
104
+ MemoryEvidence,
105
+ MemoryRelation,
106
+ MemoryEmbedding,
107
+ MemoryItemEntity,
108
+ MemoryEntity,
109
+ MemoryProfile,
110
+ MemoryRun,
111
+ MemorySpaceCreate,
112
+ MemorySpaceUpdate,
113
+ MemoryPolicyCreate,
114
+ MemoryPolicyUpdate,
115
+ MemoryItemUpdate,
116
+ MemorySpaceFilters,
117
+ MemoryPolicyFilters,
118
+ MemoryItemFilters,
119
+ MemoryRunFilters,
120
+ MemoryType,
121
+ MemoryStatus,
122
+ MemoryLayer,
123
+ MemorySourceType,
124
+ MemoryMessage,
125
+ MemoryEvent,
126
+ MemoryIngestRequest,
127
+ MemorySearchFilters,
128
+ MemorySearchRequest,
129
+ MemoryContextRequest,
130
+ MemoryResult,
131
+ MemorySearchResponse,
132
+ MemoryContextResponse,
133
+ MemoryIndexingResult,
134
+ MemoryIngestResponse,
135
+ MemoryManualRequest,
136
+ MemoryIndexingConfig,
137
+ MemoryReindexRequest,
138
+ MemoryGenerateRequest,
139
+ MemoryProfileGenerateResponse,
140
+ MemoryObservationGenerateResponse,
141
+ } from "./memory/types.js";
142
+
143
+ export { managementManifest } from "./management/manifest.js";
144
+
145
+ export {
146
+ extractPromptVariableNames,
147
+ interpolatePromptVariables,
148
+ promptVariableValue,
149
+ validatePromptTemplate,
150
+ validatePromptVariableValues,
151
+ validatePromptSettings,
152
+ } from "./prompts/variables.js";