novyx 2.9.2 → 2.11.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.
- package/dist/index.d.mts +171 -0
- package/dist/index.d.ts +171 -0
- package/dist/index.js +203 -0
- package/dist/index.mjs +203 -0
- package/package.json +2 -1
package/dist/index.d.mts
CHANGED
|
@@ -30,6 +30,8 @@ interface NovyxConfig {
|
|
|
30
30
|
apiUrl?: string;
|
|
31
31
|
timeout?: number;
|
|
32
32
|
agentId?: string;
|
|
33
|
+
controlUrl?: string;
|
|
34
|
+
controlApiKey?: string;
|
|
33
35
|
}
|
|
34
36
|
interface Edge {
|
|
35
37
|
edge_id: string;
|
|
@@ -217,6 +219,88 @@ interface CortexInsightsResult {
|
|
|
217
219
|
insights: CortexInsight[];
|
|
218
220
|
total: number;
|
|
219
221
|
}
|
|
222
|
+
interface EvalScoreBreakdown {
|
|
223
|
+
recall_consistency: number;
|
|
224
|
+
drift_score: number;
|
|
225
|
+
conflict_score: number;
|
|
226
|
+
staleness_score: number;
|
|
227
|
+
}
|
|
228
|
+
interface EvalRunResult {
|
|
229
|
+
eval_id: string;
|
|
230
|
+
health_score: number;
|
|
231
|
+
passed?: boolean;
|
|
232
|
+
breakdown: EvalScoreBreakdown;
|
|
233
|
+
total_memories: number;
|
|
234
|
+
created_at: string;
|
|
235
|
+
}
|
|
236
|
+
interface EvalHistoryResult {
|
|
237
|
+
entries: EvalRunResult[];
|
|
238
|
+
total_count: number;
|
|
239
|
+
has_more: boolean;
|
|
240
|
+
}
|
|
241
|
+
interface EvalBaseline {
|
|
242
|
+
baseline_id: string;
|
|
243
|
+
query: string;
|
|
244
|
+
expected_observation: string;
|
|
245
|
+
created_at: string;
|
|
246
|
+
}
|
|
247
|
+
interface EvalBaselineListResult {
|
|
248
|
+
baselines: EvalBaseline[];
|
|
249
|
+
total_count: number;
|
|
250
|
+
}
|
|
251
|
+
interface MemoryDraft {
|
|
252
|
+
draft_id: string;
|
|
253
|
+
observation: string;
|
|
254
|
+
context?: string;
|
|
255
|
+
tags: string[];
|
|
256
|
+
importance: number;
|
|
257
|
+
status: string;
|
|
258
|
+
created_at: string;
|
|
259
|
+
parent_id?: string;
|
|
260
|
+
branch_name?: string;
|
|
261
|
+
}
|
|
262
|
+
interface DraftDiffResult {
|
|
263
|
+
draft_id: string;
|
|
264
|
+
changes: Record<string, any>;
|
|
265
|
+
}
|
|
266
|
+
interface ContextSpace {
|
|
267
|
+
space_id: string;
|
|
268
|
+
name: string;
|
|
269
|
+
description?: string;
|
|
270
|
+
owner_tenant_id: string;
|
|
271
|
+
allowed_agent_ids: string[];
|
|
272
|
+
allowed_tenant_ids: string[];
|
|
273
|
+
tags: string[];
|
|
274
|
+
created_at: string;
|
|
275
|
+
}
|
|
276
|
+
interface Approval {
|
|
277
|
+
approval_id: string;
|
|
278
|
+
action: string;
|
|
279
|
+
connector?: string;
|
|
280
|
+
agent_id?: string;
|
|
281
|
+
status: string;
|
|
282
|
+
submitted_at?: string;
|
|
283
|
+
risk_score?: number;
|
|
284
|
+
}
|
|
285
|
+
interface ApprovalListResult {
|
|
286
|
+
approvals: Approval[];
|
|
287
|
+
total: number;
|
|
288
|
+
}
|
|
289
|
+
interface PolicyInfo {
|
|
290
|
+
name: string;
|
|
291
|
+
enabled: boolean;
|
|
292
|
+
description: string;
|
|
293
|
+
}
|
|
294
|
+
interface PoliciesResult {
|
|
295
|
+
policies: PolicyInfo[];
|
|
296
|
+
mode: string;
|
|
297
|
+
connectors: string[];
|
|
298
|
+
approval_modes: string[];
|
|
299
|
+
}
|
|
300
|
+
interface StreamStatusResult {
|
|
301
|
+
connections: number;
|
|
302
|
+
event_bus: Record<string, any>;
|
|
303
|
+
}
|
|
220
304
|
|
|
221
305
|
declare class NovyxSession {
|
|
222
306
|
private client;
|
|
@@ -266,6 +350,8 @@ declare class Novyx {
|
|
|
266
350
|
private apiUrl;
|
|
267
351
|
private timeout;
|
|
268
352
|
private agentId?;
|
|
353
|
+
private controlUrl?;
|
|
354
|
+
private controlApiKey?;
|
|
269
355
|
constructor(config: NovyxConfig);
|
|
270
356
|
private _validateKey;
|
|
271
357
|
private _request;
|
|
@@ -273,6 +359,7 @@ declare class Novyx {
|
|
|
273
359
|
tags?: string[];
|
|
274
360
|
context?: string;
|
|
275
361
|
importance?: number;
|
|
362
|
+
confidence?: number;
|
|
276
363
|
agent_id?: string;
|
|
277
364
|
space_id?: string;
|
|
278
365
|
metadata?: Record<string, any>;
|
|
@@ -340,6 +427,7 @@ declare class Novyx {
|
|
|
340
427
|
traceComplete(traceId: string): Promise<Record<string, any>>;
|
|
341
428
|
traceVerify(traceId: string): Promise<Record<string, any>>;
|
|
342
429
|
usage(): Promise<Record<string, any>>;
|
|
430
|
+
dashboard(): Promise<Record<string, any>>;
|
|
343
431
|
plans(): Promise<Record<string, any>[]>;
|
|
344
432
|
health(): Promise<Record<string, any>>;
|
|
345
433
|
session(sessionId: string): NovyxSession;
|
|
@@ -405,6 +493,89 @@ declare class Novyx {
|
|
|
405
493
|
limit?: number;
|
|
406
494
|
offset?: number;
|
|
407
495
|
}): Promise<CortexInsightsResult>;
|
|
496
|
+
draftMemory(observation: string, opts?: {
|
|
497
|
+
tags?: string[];
|
|
498
|
+
context?: string;
|
|
499
|
+
importance?: number;
|
|
500
|
+
confidence?: number;
|
|
501
|
+
agent_id?: string;
|
|
502
|
+
space_id?: string;
|
|
503
|
+
branch_name?: string;
|
|
504
|
+
}): Promise<MemoryDraft>;
|
|
505
|
+
memoryDrafts(opts?: {
|
|
506
|
+
status?: string;
|
|
507
|
+
branch_name?: string;
|
|
508
|
+
limit?: number;
|
|
509
|
+
offset?: number;
|
|
510
|
+
}): Promise<{
|
|
511
|
+
drafts: MemoryDraft[];
|
|
512
|
+
total: number;
|
|
513
|
+
}>;
|
|
514
|
+
memoryDraft(draftId: string): Promise<MemoryDraft>;
|
|
515
|
+
draftDiff(draftId: string): Promise<DraftDiffResult>;
|
|
516
|
+
mergeDraft(draftId: string): Promise<Record<string, any>>;
|
|
517
|
+
rejectDraft(draftId: string, reason?: string): Promise<Record<string, any>>;
|
|
518
|
+
memoryBranches(): Promise<{
|
|
519
|
+
branches: string[];
|
|
520
|
+
}>;
|
|
521
|
+
mergeBranch(branchName: string): Promise<Record<string, any>>;
|
|
522
|
+
rejectBranch(branchName: string, reason?: string): Promise<Record<string, any>>;
|
|
523
|
+
createSpace(name: string, opts?: {
|
|
524
|
+
description?: string;
|
|
525
|
+
allowed_agent_ids?: string[];
|
|
526
|
+
allowed_tenant_ids?: string[];
|
|
527
|
+
tags?: string[];
|
|
528
|
+
}): Promise<ContextSpace>;
|
|
529
|
+
listSpaces(opts?: {
|
|
530
|
+
limit?: number;
|
|
531
|
+
offset?: number;
|
|
532
|
+
}): Promise<{
|
|
533
|
+
spaces: ContextSpace[];
|
|
534
|
+
total: number;
|
|
535
|
+
}>;
|
|
536
|
+
getSpace(spaceId: string): Promise<ContextSpace>;
|
|
537
|
+
updateSpace(spaceId: string, updates: Record<string, any>): Promise<ContextSpace>;
|
|
538
|
+
deleteSpace(spaceId: string): Promise<Record<string, any>>;
|
|
539
|
+
spaceMemories(spaceId: string, opts?: {
|
|
540
|
+
limit?: number;
|
|
541
|
+
offset?: number;
|
|
542
|
+
}): Promise<Memory[]>;
|
|
543
|
+
evalRun(opts?: {
|
|
544
|
+
min_score?: number;
|
|
545
|
+
}): Promise<EvalRunResult>;
|
|
546
|
+
evalGate(minScore: number): Promise<EvalRunResult>;
|
|
547
|
+
evalHistory(opts?: {
|
|
548
|
+
limit?: number;
|
|
549
|
+
offset?: number;
|
|
550
|
+
}): Promise<EvalHistoryResult>;
|
|
551
|
+
evalDrift(days?: number): Promise<Record<string, any>>;
|
|
552
|
+
evalBaselineCreate(query: string, expectedObservation: string): Promise<EvalBaseline>;
|
|
553
|
+
evalBaselines(): Promise<EvalBaselineListResult>;
|
|
554
|
+
evalBaselineDelete(baselineId: string): Promise<Record<string, any>>;
|
|
555
|
+
listApprovals(opts?: {
|
|
556
|
+
limit?: number;
|
|
557
|
+
status_filter?: string;
|
|
558
|
+
}): Promise<ApprovalListResult>;
|
|
559
|
+
approveAction(approvalId: string, opts?: {
|
|
560
|
+
decision?: string;
|
|
561
|
+
reason?: string;
|
|
562
|
+
approver_id?: string;
|
|
563
|
+
}): Promise<Record<string, any>>;
|
|
564
|
+
listPolicies(): Promise<PoliciesResult>;
|
|
565
|
+
explainAction(actionId: string): Promise<Record<string, any>>;
|
|
566
|
+
streamStatus(): Promise<StreamStatusResult>;
|
|
567
|
+
memoryHealth(): Promise<Record<string, any>>;
|
|
568
|
+
private _controlRequest;
|
|
569
|
+
/** Submit an action to Novyx Control for governed execution. */
|
|
570
|
+
actionSubmit(connector: string, operation: string, payload: Record<string, any>): Promise<any>;
|
|
571
|
+
/** Get the status of a Control action. */
|
|
572
|
+
actionStatus(actionId: string): Promise<any>;
|
|
573
|
+
/** List recent Control actions. */
|
|
574
|
+
actionList(opts?: {
|
|
575
|
+
status?: string;
|
|
576
|
+
}): Promise<any>;
|
|
577
|
+
/** Check the current Control policy profile. */
|
|
578
|
+
policyCheck(): Promise<any>;
|
|
408
579
|
}
|
|
409
580
|
|
|
410
581
|
declare class NovyxError extends Error {
|
package/dist/index.d.ts
CHANGED
|
@@ -30,6 +30,8 @@ interface NovyxConfig {
|
|
|
30
30
|
apiUrl?: string;
|
|
31
31
|
timeout?: number;
|
|
32
32
|
agentId?: string;
|
|
33
|
+
controlUrl?: string;
|
|
34
|
+
controlApiKey?: string;
|
|
33
35
|
}
|
|
34
36
|
interface Edge {
|
|
35
37
|
edge_id: string;
|
|
@@ -217,6 +219,88 @@ interface CortexInsightsResult {
|
|
|
217
219
|
insights: CortexInsight[];
|
|
218
220
|
total: number;
|
|
219
221
|
}
|
|
222
|
+
interface EvalScoreBreakdown {
|
|
223
|
+
recall_consistency: number;
|
|
224
|
+
drift_score: number;
|
|
225
|
+
conflict_score: number;
|
|
226
|
+
staleness_score: number;
|
|
227
|
+
}
|
|
228
|
+
interface EvalRunResult {
|
|
229
|
+
eval_id: string;
|
|
230
|
+
health_score: number;
|
|
231
|
+
passed?: boolean;
|
|
232
|
+
breakdown: EvalScoreBreakdown;
|
|
233
|
+
total_memories: number;
|
|
234
|
+
created_at: string;
|
|
235
|
+
}
|
|
236
|
+
interface EvalHistoryResult {
|
|
237
|
+
entries: EvalRunResult[];
|
|
238
|
+
total_count: number;
|
|
239
|
+
has_more: boolean;
|
|
240
|
+
}
|
|
241
|
+
interface EvalBaseline {
|
|
242
|
+
baseline_id: string;
|
|
243
|
+
query: string;
|
|
244
|
+
expected_observation: string;
|
|
245
|
+
created_at: string;
|
|
246
|
+
}
|
|
247
|
+
interface EvalBaselineListResult {
|
|
248
|
+
baselines: EvalBaseline[];
|
|
249
|
+
total_count: number;
|
|
250
|
+
}
|
|
251
|
+
interface MemoryDraft {
|
|
252
|
+
draft_id: string;
|
|
253
|
+
observation: string;
|
|
254
|
+
context?: string;
|
|
255
|
+
tags: string[];
|
|
256
|
+
importance: number;
|
|
257
|
+
status: string;
|
|
258
|
+
created_at: string;
|
|
259
|
+
parent_id?: string;
|
|
260
|
+
branch_name?: string;
|
|
261
|
+
}
|
|
262
|
+
interface DraftDiffResult {
|
|
263
|
+
draft_id: string;
|
|
264
|
+
changes: Record<string, any>;
|
|
265
|
+
}
|
|
266
|
+
interface ContextSpace {
|
|
267
|
+
space_id: string;
|
|
268
|
+
name: string;
|
|
269
|
+
description?: string;
|
|
270
|
+
owner_tenant_id: string;
|
|
271
|
+
allowed_agent_ids: string[];
|
|
272
|
+
allowed_tenant_ids: string[];
|
|
273
|
+
tags: string[];
|
|
274
|
+
created_at: string;
|
|
275
|
+
}
|
|
276
|
+
interface Approval {
|
|
277
|
+
approval_id: string;
|
|
278
|
+
action: string;
|
|
279
|
+
connector?: string;
|
|
280
|
+
agent_id?: string;
|
|
281
|
+
status: string;
|
|
282
|
+
submitted_at?: string;
|
|
283
|
+
risk_score?: number;
|
|
284
|
+
}
|
|
285
|
+
interface ApprovalListResult {
|
|
286
|
+
approvals: Approval[];
|
|
287
|
+
total: number;
|
|
288
|
+
}
|
|
289
|
+
interface PolicyInfo {
|
|
290
|
+
name: string;
|
|
291
|
+
enabled: boolean;
|
|
292
|
+
description: string;
|
|
293
|
+
}
|
|
294
|
+
interface PoliciesResult {
|
|
295
|
+
policies: PolicyInfo[];
|
|
296
|
+
mode: string;
|
|
297
|
+
connectors: string[];
|
|
298
|
+
approval_modes: string[];
|
|
299
|
+
}
|
|
300
|
+
interface StreamStatusResult {
|
|
301
|
+
connections: number;
|
|
302
|
+
event_bus: Record<string, any>;
|
|
303
|
+
}
|
|
220
304
|
|
|
221
305
|
declare class NovyxSession {
|
|
222
306
|
private client;
|
|
@@ -266,6 +350,8 @@ declare class Novyx {
|
|
|
266
350
|
private apiUrl;
|
|
267
351
|
private timeout;
|
|
268
352
|
private agentId?;
|
|
353
|
+
private controlUrl?;
|
|
354
|
+
private controlApiKey?;
|
|
269
355
|
constructor(config: NovyxConfig);
|
|
270
356
|
private _validateKey;
|
|
271
357
|
private _request;
|
|
@@ -273,6 +359,7 @@ declare class Novyx {
|
|
|
273
359
|
tags?: string[];
|
|
274
360
|
context?: string;
|
|
275
361
|
importance?: number;
|
|
362
|
+
confidence?: number;
|
|
276
363
|
agent_id?: string;
|
|
277
364
|
space_id?: string;
|
|
278
365
|
metadata?: Record<string, any>;
|
|
@@ -340,6 +427,7 @@ declare class Novyx {
|
|
|
340
427
|
traceComplete(traceId: string): Promise<Record<string, any>>;
|
|
341
428
|
traceVerify(traceId: string): Promise<Record<string, any>>;
|
|
342
429
|
usage(): Promise<Record<string, any>>;
|
|
430
|
+
dashboard(): Promise<Record<string, any>>;
|
|
343
431
|
plans(): Promise<Record<string, any>[]>;
|
|
344
432
|
health(): Promise<Record<string, any>>;
|
|
345
433
|
session(sessionId: string): NovyxSession;
|
|
@@ -405,6 +493,89 @@ declare class Novyx {
|
|
|
405
493
|
limit?: number;
|
|
406
494
|
offset?: number;
|
|
407
495
|
}): Promise<CortexInsightsResult>;
|
|
496
|
+
draftMemory(observation: string, opts?: {
|
|
497
|
+
tags?: string[];
|
|
498
|
+
context?: string;
|
|
499
|
+
importance?: number;
|
|
500
|
+
confidence?: number;
|
|
501
|
+
agent_id?: string;
|
|
502
|
+
space_id?: string;
|
|
503
|
+
branch_name?: string;
|
|
504
|
+
}): Promise<MemoryDraft>;
|
|
505
|
+
memoryDrafts(opts?: {
|
|
506
|
+
status?: string;
|
|
507
|
+
branch_name?: string;
|
|
508
|
+
limit?: number;
|
|
509
|
+
offset?: number;
|
|
510
|
+
}): Promise<{
|
|
511
|
+
drafts: MemoryDraft[];
|
|
512
|
+
total: number;
|
|
513
|
+
}>;
|
|
514
|
+
memoryDraft(draftId: string): Promise<MemoryDraft>;
|
|
515
|
+
draftDiff(draftId: string): Promise<DraftDiffResult>;
|
|
516
|
+
mergeDraft(draftId: string): Promise<Record<string, any>>;
|
|
517
|
+
rejectDraft(draftId: string, reason?: string): Promise<Record<string, any>>;
|
|
518
|
+
memoryBranches(): Promise<{
|
|
519
|
+
branches: string[];
|
|
520
|
+
}>;
|
|
521
|
+
mergeBranch(branchName: string): Promise<Record<string, any>>;
|
|
522
|
+
rejectBranch(branchName: string, reason?: string): Promise<Record<string, any>>;
|
|
523
|
+
createSpace(name: string, opts?: {
|
|
524
|
+
description?: string;
|
|
525
|
+
allowed_agent_ids?: string[];
|
|
526
|
+
allowed_tenant_ids?: string[];
|
|
527
|
+
tags?: string[];
|
|
528
|
+
}): Promise<ContextSpace>;
|
|
529
|
+
listSpaces(opts?: {
|
|
530
|
+
limit?: number;
|
|
531
|
+
offset?: number;
|
|
532
|
+
}): Promise<{
|
|
533
|
+
spaces: ContextSpace[];
|
|
534
|
+
total: number;
|
|
535
|
+
}>;
|
|
536
|
+
getSpace(spaceId: string): Promise<ContextSpace>;
|
|
537
|
+
updateSpace(spaceId: string, updates: Record<string, any>): Promise<ContextSpace>;
|
|
538
|
+
deleteSpace(spaceId: string): Promise<Record<string, any>>;
|
|
539
|
+
spaceMemories(spaceId: string, opts?: {
|
|
540
|
+
limit?: number;
|
|
541
|
+
offset?: number;
|
|
542
|
+
}): Promise<Memory[]>;
|
|
543
|
+
evalRun(opts?: {
|
|
544
|
+
min_score?: number;
|
|
545
|
+
}): Promise<EvalRunResult>;
|
|
546
|
+
evalGate(minScore: number): Promise<EvalRunResult>;
|
|
547
|
+
evalHistory(opts?: {
|
|
548
|
+
limit?: number;
|
|
549
|
+
offset?: number;
|
|
550
|
+
}): Promise<EvalHistoryResult>;
|
|
551
|
+
evalDrift(days?: number): Promise<Record<string, any>>;
|
|
552
|
+
evalBaselineCreate(query: string, expectedObservation: string): Promise<EvalBaseline>;
|
|
553
|
+
evalBaselines(): Promise<EvalBaselineListResult>;
|
|
554
|
+
evalBaselineDelete(baselineId: string): Promise<Record<string, any>>;
|
|
555
|
+
listApprovals(opts?: {
|
|
556
|
+
limit?: number;
|
|
557
|
+
status_filter?: string;
|
|
558
|
+
}): Promise<ApprovalListResult>;
|
|
559
|
+
approveAction(approvalId: string, opts?: {
|
|
560
|
+
decision?: string;
|
|
561
|
+
reason?: string;
|
|
562
|
+
approver_id?: string;
|
|
563
|
+
}): Promise<Record<string, any>>;
|
|
564
|
+
listPolicies(): Promise<PoliciesResult>;
|
|
565
|
+
explainAction(actionId: string): Promise<Record<string, any>>;
|
|
566
|
+
streamStatus(): Promise<StreamStatusResult>;
|
|
567
|
+
memoryHealth(): Promise<Record<string, any>>;
|
|
568
|
+
private _controlRequest;
|
|
569
|
+
/** Submit an action to Novyx Control for governed execution. */
|
|
570
|
+
actionSubmit(connector: string, operation: string, payload: Record<string, any>): Promise<any>;
|
|
571
|
+
/** Get the status of a Control action. */
|
|
572
|
+
actionStatus(actionId: string): Promise<any>;
|
|
573
|
+
/** List recent Control actions. */
|
|
574
|
+
actionList(opts?: {
|
|
575
|
+
status?: string;
|
|
576
|
+
}): Promise<any>;
|
|
577
|
+
/** Check the current Control policy profile. */
|
|
578
|
+
policyCheck(): Promise<any>;
|
|
408
579
|
}
|
|
409
580
|
|
|
410
581
|
declare class NovyxError extends Error {
|
package/dist/index.js
CHANGED
|
@@ -109,6 +109,8 @@ var Novyx = class {
|
|
|
109
109
|
this.apiUrl = (config.apiUrl ?? "https://novyx-ram-api.fly.dev").replace(/\/+$/, "");
|
|
110
110
|
this.timeout = config.timeout ?? 30;
|
|
111
111
|
this.agentId = config.agentId;
|
|
112
|
+
this.controlUrl = config.controlUrl?.replace(/\/+$/, "");
|
|
113
|
+
this.controlApiKey = config.controlApiKey;
|
|
112
114
|
this._validateKey();
|
|
113
115
|
}
|
|
114
116
|
_validateKey() {
|
|
@@ -210,6 +212,7 @@ var Novyx = class {
|
|
|
210
212
|
tags: opts?.tags ?? [],
|
|
211
213
|
importance: opts?.importance ?? 5
|
|
212
214
|
};
|
|
215
|
+
if (opts?.confidence !== void 0) body.confidence = opts.confidence;
|
|
213
216
|
if (resolvedAgentId) body.agent_id = resolvedAgentId;
|
|
214
217
|
if (opts?.space_id) body.space_id = opts.space_id;
|
|
215
218
|
if (opts?.ttl_seconds !== void 0) body.ttl_seconds = opts.ttl_seconds;
|
|
@@ -391,6 +394,9 @@ var Novyx = class {
|
|
|
391
394
|
async usage() {
|
|
392
395
|
return this._request("GET", "/v1/usage");
|
|
393
396
|
}
|
|
397
|
+
async dashboard() {
|
|
398
|
+
return this._request("GET", "/v1/dashboard");
|
|
399
|
+
}
|
|
394
400
|
async plans() {
|
|
395
401
|
return this._request("GET", "/v1/plans");
|
|
396
402
|
}
|
|
@@ -542,6 +548,203 @@ var Novyx = class {
|
|
|
542
548
|
params: { limit: opts?.limit ?? 20, offset: opts?.offset ?? 0 }
|
|
543
549
|
});
|
|
544
550
|
}
|
|
551
|
+
// ========================================================================
|
|
552
|
+
// Drafts & Branches
|
|
553
|
+
// ========================================================================
|
|
554
|
+
async draftMemory(observation, opts) {
|
|
555
|
+
const body = { observation };
|
|
556
|
+
if (opts?.tags) body.tags = opts.tags;
|
|
557
|
+
if (opts?.context) body.context = opts.context;
|
|
558
|
+
if (opts?.importance !== void 0) body.importance = opts.importance;
|
|
559
|
+
if (opts?.confidence !== void 0) body.confidence = opts.confidence;
|
|
560
|
+
if (opts?.agent_id) body.agent_id = opts.agent_id;
|
|
561
|
+
if (opts?.space_id) body.space_id = opts.space_id;
|
|
562
|
+
if (opts?.branch_name) body.branch_name = opts.branch_name;
|
|
563
|
+
return this._request("POST", "/v1/memory-drafts", { body });
|
|
564
|
+
}
|
|
565
|
+
async memoryDrafts(opts) {
|
|
566
|
+
const params = {
|
|
567
|
+
limit: opts?.limit ?? 50,
|
|
568
|
+
offset: opts?.offset ?? 0
|
|
569
|
+
};
|
|
570
|
+
if (opts?.status) params.status = opts.status;
|
|
571
|
+
if (opts?.branch_name) params.branch_name = opts.branch_name;
|
|
572
|
+
return this._request("GET", "/v1/memory-drafts", { params });
|
|
573
|
+
}
|
|
574
|
+
async memoryDraft(draftId) {
|
|
575
|
+
return this._request("GET", `/v1/memory-drafts/${draftId}`);
|
|
576
|
+
}
|
|
577
|
+
async draftDiff(draftId) {
|
|
578
|
+
return this._request("GET", `/v1/memory-drafts/${draftId}/diff`);
|
|
579
|
+
}
|
|
580
|
+
async mergeDraft(draftId) {
|
|
581
|
+
return this._request("POST", `/v1/memory-drafts/${draftId}/merge`);
|
|
582
|
+
}
|
|
583
|
+
async rejectDraft(draftId, reason) {
|
|
584
|
+
const body = {};
|
|
585
|
+
if (reason) body.reason = reason;
|
|
586
|
+
return this._request("POST", `/v1/memory-drafts/${draftId}/reject`, { body });
|
|
587
|
+
}
|
|
588
|
+
async memoryBranches() {
|
|
589
|
+
return this._request("GET", "/v1/memory-drafts/branches");
|
|
590
|
+
}
|
|
591
|
+
async mergeBranch(branchName) {
|
|
592
|
+
return this._request("POST", `/v1/memory-drafts/branches/${branchName}/merge`);
|
|
593
|
+
}
|
|
594
|
+
async rejectBranch(branchName, reason) {
|
|
595
|
+
const body = {};
|
|
596
|
+
if (reason) body.reason = reason;
|
|
597
|
+
return this._request("POST", `/v1/memory-drafts/branches/${branchName}/reject`, { body });
|
|
598
|
+
}
|
|
599
|
+
// ========================================================================
|
|
600
|
+
// Context Spaces
|
|
601
|
+
// ========================================================================
|
|
602
|
+
async createSpace(name, opts) {
|
|
603
|
+
const body = { name };
|
|
604
|
+
if (opts?.description) body.description = opts.description;
|
|
605
|
+
if (opts?.allowed_agent_ids) body.allowed_agent_ids = opts.allowed_agent_ids;
|
|
606
|
+
if (opts?.allowed_tenant_ids) body.allowed_tenant_ids = opts.allowed_tenant_ids;
|
|
607
|
+
if (opts?.tags) body.tags = opts.tags;
|
|
608
|
+
return this._request("POST", "/v1/context-spaces", { body });
|
|
609
|
+
}
|
|
610
|
+
async listSpaces(opts) {
|
|
611
|
+
return this._request("GET", "/v1/context-spaces", {
|
|
612
|
+
params: { limit: opts?.limit ?? 50, offset: opts?.offset ?? 0 }
|
|
613
|
+
});
|
|
614
|
+
}
|
|
615
|
+
async getSpace(spaceId) {
|
|
616
|
+
return this._request("GET", `/v1/context-spaces/${spaceId}`);
|
|
617
|
+
}
|
|
618
|
+
async updateSpace(spaceId, updates) {
|
|
619
|
+
return this._request("PUT", `/v1/context-spaces/${spaceId}`, { body: updates });
|
|
620
|
+
}
|
|
621
|
+
async deleteSpace(spaceId) {
|
|
622
|
+
return this._request("DELETE", `/v1/context-spaces/${spaceId}`);
|
|
623
|
+
}
|
|
624
|
+
async spaceMemories(spaceId, opts) {
|
|
625
|
+
const result = await this._request("GET", `/v1/context-spaces/${spaceId}/memories`, {
|
|
626
|
+
params: { limit: opts?.limit ?? 100, offset: opts?.offset ?? 0 }
|
|
627
|
+
});
|
|
628
|
+
return result.memories ?? result;
|
|
629
|
+
}
|
|
630
|
+
// ========================================================================
|
|
631
|
+
// Eval
|
|
632
|
+
// ========================================================================
|
|
633
|
+
async evalRun(opts) {
|
|
634
|
+
const body = {};
|
|
635
|
+
if (opts?.min_score !== void 0) body.min_score = opts.min_score;
|
|
636
|
+
return this._request("POST", "/v1/eval/run", { body });
|
|
637
|
+
}
|
|
638
|
+
async evalGate(minScore) {
|
|
639
|
+
return this._request("POST", "/v1/eval/gate", {
|
|
640
|
+
body: { min_score: minScore }
|
|
641
|
+
});
|
|
642
|
+
}
|
|
643
|
+
async evalHistory(opts) {
|
|
644
|
+
return this._request("GET", "/v1/eval/history", {
|
|
645
|
+
params: { limit: opts?.limit ?? 50, offset: opts?.offset ?? 0 }
|
|
646
|
+
});
|
|
647
|
+
}
|
|
648
|
+
async evalDrift(days = 7) {
|
|
649
|
+
return this._request("GET", "/v1/eval/drift", { params: { days } });
|
|
650
|
+
}
|
|
651
|
+
async evalBaselineCreate(query, expectedObservation) {
|
|
652
|
+
return this._request("POST", "/v1/eval/baselines", {
|
|
653
|
+
body: { query, expected_observation: expectedObservation }
|
|
654
|
+
});
|
|
655
|
+
}
|
|
656
|
+
async evalBaselines() {
|
|
657
|
+
return this._request("GET", "/v1/eval/baselines");
|
|
658
|
+
}
|
|
659
|
+
async evalBaselineDelete(baselineId) {
|
|
660
|
+
return this._request("DELETE", `/v1/eval/baselines/${baselineId}`);
|
|
661
|
+
}
|
|
662
|
+
// ========================================================================
|
|
663
|
+
// Approvals
|
|
664
|
+
// ========================================================================
|
|
665
|
+
async listApprovals(opts) {
|
|
666
|
+
const params = { limit: opts?.limit ?? 50 };
|
|
667
|
+
if (opts?.status_filter) params.status_filter = opts.status_filter;
|
|
668
|
+
return this._request("GET", "/v1/approvals", { params });
|
|
669
|
+
}
|
|
670
|
+
async approveAction(approvalId, opts) {
|
|
671
|
+
const params = { decision: opts?.decision ?? "approve" };
|
|
672
|
+
if (opts?.reason) params.reason = opts.reason;
|
|
673
|
+
if (opts?.approver_id) params.approver_id = opts.approver_id;
|
|
674
|
+
return this._request("POST", `/v1/approvals/${approvalId}/decision`, { params });
|
|
675
|
+
}
|
|
676
|
+
async listPolicies() {
|
|
677
|
+
return this._request("GET", "/v1/control/policies");
|
|
678
|
+
}
|
|
679
|
+
// ========================================================================
|
|
680
|
+
// Explain Action
|
|
681
|
+
// ========================================================================
|
|
682
|
+
async explainAction(actionId) {
|
|
683
|
+
return this._request("GET", `/v1/actions/${actionId}/explain`);
|
|
684
|
+
}
|
|
685
|
+
// ========================================================================
|
|
686
|
+
// Streams
|
|
687
|
+
// ========================================================================
|
|
688
|
+
async streamStatus() {
|
|
689
|
+
return this._request("GET", "/v1/streams/status");
|
|
690
|
+
}
|
|
691
|
+
// ========================================================================
|
|
692
|
+
// Memory Health
|
|
693
|
+
// ========================================================================
|
|
694
|
+
async memoryHealth() {
|
|
695
|
+
return this._request("GET", "/v1/memories/stats");
|
|
696
|
+
}
|
|
697
|
+
// =========================================================================
|
|
698
|
+
// Control — Governed agent actions (requires controlUrl)
|
|
699
|
+
// =========================================================================
|
|
700
|
+
async _controlRequest(method, endpoint, opts) {
|
|
701
|
+
if (!this.controlUrl) {
|
|
702
|
+
throw new NovyxError("Control not configured. Pass controlUrl to Novyx().");
|
|
703
|
+
}
|
|
704
|
+
const url = new URL(`${this.controlUrl}${endpoint}`);
|
|
705
|
+
if (opts?.params) {
|
|
706
|
+
for (const [k, v] of Object.entries(opts.params)) {
|
|
707
|
+
if (v !== void 0 && v !== null) url.searchParams.set(k, String(v));
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
const headers = {
|
|
711
|
+
"Authorization": `Bearer ${this.controlApiKey || ""}`
|
|
712
|
+
};
|
|
713
|
+
if (opts?.body) headers["Content-Type"] = "application/json";
|
|
714
|
+
const controller = new AbortController();
|
|
715
|
+
const timer = setTimeout(() => controller.abort(), this.timeout * 1e3);
|
|
716
|
+
try {
|
|
717
|
+
const res = await fetch(url.toString(), {
|
|
718
|
+
method,
|
|
719
|
+
headers,
|
|
720
|
+
body: opts?.body ? JSON.stringify(opts.body) : void 0,
|
|
721
|
+
signal: controller.signal
|
|
722
|
+
});
|
|
723
|
+
if (!res.ok) {
|
|
724
|
+
const text = await res.text().catch(() => "");
|
|
725
|
+
throw new NovyxError(`Control API error ${res.status}: ${text}`);
|
|
726
|
+
}
|
|
727
|
+
return await res.json();
|
|
728
|
+
} finally {
|
|
729
|
+
clearTimeout(timer);
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
/** Submit an action to Novyx Control for governed execution. */
|
|
733
|
+
async actionSubmit(connector, operation, payload) {
|
|
734
|
+
return this._controlRequest("POST", `/v1/actions/${connector}/${operation}`, { body: payload });
|
|
735
|
+
}
|
|
736
|
+
/** Get the status of a Control action. */
|
|
737
|
+
async actionStatus(actionId) {
|
|
738
|
+
return this._controlRequest("GET", `/v1/actions/${actionId}`);
|
|
739
|
+
}
|
|
740
|
+
/** List recent Control actions. */
|
|
741
|
+
async actionList(opts) {
|
|
742
|
+
return this._controlRequest("GET", "/v1/actions", { params: opts });
|
|
743
|
+
}
|
|
744
|
+
/** Check the current Control policy profile. */
|
|
745
|
+
async policyCheck() {
|
|
746
|
+
return this._controlRequest("GET", "/v1/control/policies");
|
|
747
|
+
}
|
|
545
748
|
};
|
|
546
749
|
// Annotate the CommonJS export names for ESM import in node:
|
|
547
750
|
0 && (module.exports = {
|
package/dist/index.mjs
CHANGED
|
@@ -76,6 +76,8 @@ var Novyx = class {
|
|
|
76
76
|
this.apiUrl = (config.apiUrl ?? "https://novyx-ram-api.fly.dev").replace(/\/+$/, "");
|
|
77
77
|
this.timeout = config.timeout ?? 30;
|
|
78
78
|
this.agentId = config.agentId;
|
|
79
|
+
this.controlUrl = config.controlUrl?.replace(/\/+$/, "");
|
|
80
|
+
this.controlApiKey = config.controlApiKey;
|
|
79
81
|
this._validateKey();
|
|
80
82
|
}
|
|
81
83
|
_validateKey() {
|
|
@@ -177,6 +179,7 @@ var Novyx = class {
|
|
|
177
179
|
tags: opts?.tags ?? [],
|
|
178
180
|
importance: opts?.importance ?? 5
|
|
179
181
|
};
|
|
182
|
+
if (opts?.confidence !== void 0) body.confidence = opts.confidence;
|
|
180
183
|
if (resolvedAgentId) body.agent_id = resolvedAgentId;
|
|
181
184
|
if (opts?.space_id) body.space_id = opts.space_id;
|
|
182
185
|
if (opts?.ttl_seconds !== void 0) body.ttl_seconds = opts.ttl_seconds;
|
|
@@ -358,6 +361,9 @@ var Novyx = class {
|
|
|
358
361
|
async usage() {
|
|
359
362
|
return this._request("GET", "/v1/usage");
|
|
360
363
|
}
|
|
364
|
+
async dashboard() {
|
|
365
|
+
return this._request("GET", "/v1/dashboard");
|
|
366
|
+
}
|
|
361
367
|
async plans() {
|
|
362
368
|
return this._request("GET", "/v1/plans");
|
|
363
369
|
}
|
|
@@ -509,6 +515,203 @@ var Novyx = class {
|
|
|
509
515
|
params: { limit: opts?.limit ?? 20, offset: opts?.offset ?? 0 }
|
|
510
516
|
});
|
|
511
517
|
}
|
|
518
|
+
// ========================================================================
|
|
519
|
+
// Drafts & Branches
|
|
520
|
+
// ========================================================================
|
|
521
|
+
async draftMemory(observation, opts) {
|
|
522
|
+
const body = { observation };
|
|
523
|
+
if (opts?.tags) body.tags = opts.tags;
|
|
524
|
+
if (opts?.context) body.context = opts.context;
|
|
525
|
+
if (opts?.importance !== void 0) body.importance = opts.importance;
|
|
526
|
+
if (opts?.confidence !== void 0) body.confidence = opts.confidence;
|
|
527
|
+
if (opts?.agent_id) body.agent_id = opts.agent_id;
|
|
528
|
+
if (opts?.space_id) body.space_id = opts.space_id;
|
|
529
|
+
if (opts?.branch_name) body.branch_name = opts.branch_name;
|
|
530
|
+
return this._request("POST", "/v1/memory-drafts", { body });
|
|
531
|
+
}
|
|
532
|
+
async memoryDrafts(opts) {
|
|
533
|
+
const params = {
|
|
534
|
+
limit: opts?.limit ?? 50,
|
|
535
|
+
offset: opts?.offset ?? 0
|
|
536
|
+
};
|
|
537
|
+
if (opts?.status) params.status = opts.status;
|
|
538
|
+
if (opts?.branch_name) params.branch_name = opts.branch_name;
|
|
539
|
+
return this._request("GET", "/v1/memory-drafts", { params });
|
|
540
|
+
}
|
|
541
|
+
async memoryDraft(draftId) {
|
|
542
|
+
return this._request("GET", `/v1/memory-drafts/${draftId}`);
|
|
543
|
+
}
|
|
544
|
+
async draftDiff(draftId) {
|
|
545
|
+
return this._request("GET", `/v1/memory-drafts/${draftId}/diff`);
|
|
546
|
+
}
|
|
547
|
+
async mergeDraft(draftId) {
|
|
548
|
+
return this._request("POST", `/v1/memory-drafts/${draftId}/merge`);
|
|
549
|
+
}
|
|
550
|
+
async rejectDraft(draftId, reason) {
|
|
551
|
+
const body = {};
|
|
552
|
+
if (reason) body.reason = reason;
|
|
553
|
+
return this._request("POST", `/v1/memory-drafts/${draftId}/reject`, { body });
|
|
554
|
+
}
|
|
555
|
+
async memoryBranches() {
|
|
556
|
+
return this._request("GET", "/v1/memory-drafts/branches");
|
|
557
|
+
}
|
|
558
|
+
async mergeBranch(branchName) {
|
|
559
|
+
return this._request("POST", `/v1/memory-drafts/branches/${branchName}/merge`);
|
|
560
|
+
}
|
|
561
|
+
async rejectBranch(branchName, reason) {
|
|
562
|
+
const body = {};
|
|
563
|
+
if (reason) body.reason = reason;
|
|
564
|
+
return this._request("POST", `/v1/memory-drafts/branches/${branchName}/reject`, { body });
|
|
565
|
+
}
|
|
566
|
+
// ========================================================================
|
|
567
|
+
// Context Spaces
|
|
568
|
+
// ========================================================================
|
|
569
|
+
async createSpace(name, opts) {
|
|
570
|
+
const body = { name };
|
|
571
|
+
if (opts?.description) body.description = opts.description;
|
|
572
|
+
if (opts?.allowed_agent_ids) body.allowed_agent_ids = opts.allowed_agent_ids;
|
|
573
|
+
if (opts?.allowed_tenant_ids) body.allowed_tenant_ids = opts.allowed_tenant_ids;
|
|
574
|
+
if (opts?.tags) body.tags = opts.tags;
|
|
575
|
+
return this._request("POST", "/v1/context-spaces", { body });
|
|
576
|
+
}
|
|
577
|
+
async listSpaces(opts) {
|
|
578
|
+
return this._request("GET", "/v1/context-spaces", {
|
|
579
|
+
params: { limit: opts?.limit ?? 50, offset: opts?.offset ?? 0 }
|
|
580
|
+
});
|
|
581
|
+
}
|
|
582
|
+
async getSpace(spaceId) {
|
|
583
|
+
return this._request("GET", `/v1/context-spaces/${spaceId}`);
|
|
584
|
+
}
|
|
585
|
+
async updateSpace(spaceId, updates) {
|
|
586
|
+
return this._request("PUT", `/v1/context-spaces/${spaceId}`, { body: updates });
|
|
587
|
+
}
|
|
588
|
+
async deleteSpace(spaceId) {
|
|
589
|
+
return this._request("DELETE", `/v1/context-spaces/${spaceId}`);
|
|
590
|
+
}
|
|
591
|
+
async spaceMemories(spaceId, opts) {
|
|
592
|
+
const result = await this._request("GET", `/v1/context-spaces/${spaceId}/memories`, {
|
|
593
|
+
params: { limit: opts?.limit ?? 100, offset: opts?.offset ?? 0 }
|
|
594
|
+
});
|
|
595
|
+
return result.memories ?? result;
|
|
596
|
+
}
|
|
597
|
+
// ========================================================================
|
|
598
|
+
// Eval
|
|
599
|
+
// ========================================================================
|
|
600
|
+
async evalRun(opts) {
|
|
601
|
+
const body = {};
|
|
602
|
+
if (opts?.min_score !== void 0) body.min_score = opts.min_score;
|
|
603
|
+
return this._request("POST", "/v1/eval/run", { body });
|
|
604
|
+
}
|
|
605
|
+
async evalGate(minScore) {
|
|
606
|
+
return this._request("POST", "/v1/eval/gate", {
|
|
607
|
+
body: { min_score: minScore }
|
|
608
|
+
});
|
|
609
|
+
}
|
|
610
|
+
async evalHistory(opts) {
|
|
611
|
+
return this._request("GET", "/v1/eval/history", {
|
|
612
|
+
params: { limit: opts?.limit ?? 50, offset: opts?.offset ?? 0 }
|
|
613
|
+
});
|
|
614
|
+
}
|
|
615
|
+
async evalDrift(days = 7) {
|
|
616
|
+
return this._request("GET", "/v1/eval/drift", { params: { days } });
|
|
617
|
+
}
|
|
618
|
+
async evalBaselineCreate(query, expectedObservation) {
|
|
619
|
+
return this._request("POST", "/v1/eval/baselines", {
|
|
620
|
+
body: { query, expected_observation: expectedObservation }
|
|
621
|
+
});
|
|
622
|
+
}
|
|
623
|
+
async evalBaselines() {
|
|
624
|
+
return this._request("GET", "/v1/eval/baselines");
|
|
625
|
+
}
|
|
626
|
+
async evalBaselineDelete(baselineId) {
|
|
627
|
+
return this._request("DELETE", `/v1/eval/baselines/${baselineId}`);
|
|
628
|
+
}
|
|
629
|
+
// ========================================================================
|
|
630
|
+
// Approvals
|
|
631
|
+
// ========================================================================
|
|
632
|
+
async listApprovals(opts) {
|
|
633
|
+
const params = { limit: opts?.limit ?? 50 };
|
|
634
|
+
if (opts?.status_filter) params.status_filter = opts.status_filter;
|
|
635
|
+
return this._request("GET", "/v1/approvals", { params });
|
|
636
|
+
}
|
|
637
|
+
async approveAction(approvalId, opts) {
|
|
638
|
+
const params = { decision: opts?.decision ?? "approve" };
|
|
639
|
+
if (opts?.reason) params.reason = opts.reason;
|
|
640
|
+
if (opts?.approver_id) params.approver_id = opts.approver_id;
|
|
641
|
+
return this._request("POST", `/v1/approvals/${approvalId}/decision`, { params });
|
|
642
|
+
}
|
|
643
|
+
async listPolicies() {
|
|
644
|
+
return this._request("GET", "/v1/control/policies");
|
|
645
|
+
}
|
|
646
|
+
// ========================================================================
|
|
647
|
+
// Explain Action
|
|
648
|
+
// ========================================================================
|
|
649
|
+
async explainAction(actionId) {
|
|
650
|
+
return this._request("GET", `/v1/actions/${actionId}/explain`);
|
|
651
|
+
}
|
|
652
|
+
// ========================================================================
|
|
653
|
+
// Streams
|
|
654
|
+
// ========================================================================
|
|
655
|
+
async streamStatus() {
|
|
656
|
+
return this._request("GET", "/v1/streams/status");
|
|
657
|
+
}
|
|
658
|
+
// ========================================================================
|
|
659
|
+
// Memory Health
|
|
660
|
+
// ========================================================================
|
|
661
|
+
async memoryHealth() {
|
|
662
|
+
return this._request("GET", "/v1/memories/stats");
|
|
663
|
+
}
|
|
664
|
+
// =========================================================================
|
|
665
|
+
// Control — Governed agent actions (requires controlUrl)
|
|
666
|
+
// =========================================================================
|
|
667
|
+
async _controlRequest(method, endpoint, opts) {
|
|
668
|
+
if (!this.controlUrl) {
|
|
669
|
+
throw new NovyxError("Control not configured. Pass controlUrl to Novyx().");
|
|
670
|
+
}
|
|
671
|
+
const url = new URL(`${this.controlUrl}${endpoint}`);
|
|
672
|
+
if (opts?.params) {
|
|
673
|
+
for (const [k, v] of Object.entries(opts.params)) {
|
|
674
|
+
if (v !== void 0 && v !== null) url.searchParams.set(k, String(v));
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
const headers = {
|
|
678
|
+
"Authorization": `Bearer ${this.controlApiKey || ""}`
|
|
679
|
+
};
|
|
680
|
+
if (opts?.body) headers["Content-Type"] = "application/json";
|
|
681
|
+
const controller = new AbortController();
|
|
682
|
+
const timer = setTimeout(() => controller.abort(), this.timeout * 1e3);
|
|
683
|
+
try {
|
|
684
|
+
const res = await fetch(url.toString(), {
|
|
685
|
+
method,
|
|
686
|
+
headers,
|
|
687
|
+
body: opts?.body ? JSON.stringify(opts.body) : void 0,
|
|
688
|
+
signal: controller.signal
|
|
689
|
+
});
|
|
690
|
+
if (!res.ok) {
|
|
691
|
+
const text = await res.text().catch(() => "");
|
|
692
|
+
throw new NovyxError(`Control API error ${res.status}: ${text}`);
|
|
693
|
+
}
|
|
694
|
+
return await res.json();
|
|
695
|
+
} finally {
|
|
696
|
+
clearTimeout(timer);
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
/** Submit an action to Novyx Control for governed execution. */
|
|
700
|
+
async actionSubmit(connector, operation, payload) {
|
|
701
|
+
return this._controlRequest("POST", `/v1/actions/${connector}/${operation}`, { body: payload });
|
|
702
|
+
}
|
|
703
|
+
/** Get the status of a Control action. */
|
|
704
|
+
async actionStatus(actionId) {
|
|
705
|
+
return this._controlRequest("GET", `/v1/actions/${actionId}`);
|
|
706
|
+
}
|
|
707
|
+
/** List recent Control actions. */
|
|
708
|
+
async actionList(opts) {
|
|
709
|
+
return this._controlRequest("GET", "/v1/actions", { params: opts });
|
|
710
|
+
}
|
|
711
|
+
/** Check the current Control policy profile. */
|
|
712
|
+
async policyCheck() {
|
|
713
|
+
return this._controlRequest("GET", "/v1/control/policies");
|
|
714
|
+
}
|
|
512
715
|
};
|
|
513
716
|
export {
|
|
514
717
|
Novyx,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "novyx",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.11.0",
|
|
4
4
|
"description": "Novyx SDK - Persistent memory, rollback, and audit trail for AI agents",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"typescript": "^5.3.0",
|
|
29
29
|
"vitest": "^1.0.0"
|
|
30
30
|
},
|
|
31
|
+
"homepage": "https://novyxlabs.com",
|
|
31
32
|
"license": "MIT",
|
|
32
33
|
"author": "Novyx Labs"
|
|
33
34
|
}
|