@ailu-ai/contracts 2.0.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/LICENSE +201 -0
- package/dist/admin.d.ts +99 -0
- package/dist/admin.d.ts.map +1 -0
- package/dist/admin.js +59 -0
- package/dist/admin.js.map +1 -0
- package/dist/admin.test.d.ts +2 -0
- package/dist/admin.test.d.ts.map +1 -0
- package/dist/admin.test.js +42 -0
- package/dist/admin.test.js.map +1 -0
- package/dist/approvals.d.ts +58 -0
- package/dist/approvals.d.ts.map +1 -0
- package/dist/approvals.js +28 -0
- package/dist/approvals.js.map +1 -0
- package/dist/artifacts.d.ts +22 -0
- package/dist/artifacts.d.ts.map +1 -0
- package/dist/artifacts.js +9 -0
- package/dist/artifacts.js.map +1 -0
- package/dist/catalog.d.ts +626 -0
- package/dist/catalog.d.ts.map +1 -0
- package/dist/catalog.js +69 -0
- package/dist/catalog.js.map +1 -0
- package/dist/catalog.test.d.ts +2 -0
- package/dist/catalog.test.d.ts.map +1 -0
- package/dist/catalog.test.js +98 -0
- package/dist/catalog.test.js.map +1 -0
- package/dist/compliance.d.ts +428 -0
- package/dist/compliance.d.ts.map +1 -0
- package/dist/compliance.js +80 -0
- package/dist/compliance.js.map +1 -0
- package/dist/connectors.d.ts +161 -0
- package/dist/connectors.d.ts.map +1 -0
- package/dist/connectors.js +49 -0
- package/dist/connectors.js.map +1 -0
- package/dist/error-envelope.d.ts +16 -0
- package/dist/error-envelope.d.ts.map +1 -0
- package/dist/error-envelope.js +7 -0
- package/dist/error-envelope.js.map +1 -0
- package/dist/eval.d.ts +144 -0
- package/dist/eval.d.ts.map +1 -0
- package/dist/eval.js +36 -0
- package/dist/eval.js.map +1 -0
- package/dist/events.d.ts +359 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +134 -0
- package/dist/events.js.map +1 -0
- package/dist/fleet.d.ts +147 -0
- package/dist/fleet.d.ts.map +1 -0
- package/dist/fleet.js +34 -0
- package/dist/fleet.js.map +1 -0
- package/dist/fs-policy.d.ts +101 -0
- package/dist/fs-policy.d.ts.map +1 -0
- package/dist/fs-policy.js +36 -0
- package/dist/fs-policy.js.map +1 -0
- package/dist/fs-policy.test.d.ts +2 -0
- package/dist/fs-policy.test.d.ts.map +1 -0
- package/dist/fs-policy.test.js +35 -0
- package/dist/fs-policy.test.js.map +1 -0
- package/dist/fs.d.ts +182 -0
- package/dist/fs.d.ts.map +1 -0
- package/dist/fs.js +59 -0
- package/dist/fs.js.map +1 -0
- package/dist/fs.test.d.ts +2 -0
- package/dist/fs.test.d.ts.map +1 -0
- package/dist/fs.test.js +35 -0
- package/dist/fs.test.js.map +1 -0
- package/dist/graphs.d.ts +951 -0
- package/dist/graphs.d.ts.map +1 -0
- package/dist/graphs.js +94 -0
- package/dist/graphs.js.map +1 -0
- package/dist/graphs.test.d.ts +2 -0
- package/dist/graphs.test.d.ts.map +1 -0
- package/dist/graphs.test.js +65 -0
- package/dist/graphs.test.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/index.test.d.ts +2 -0
- package/dist/index.test.d.ts.map +1 -0
- package/dist/index.test.js +9 -0
- package/dist/index.test.js.map +1 -0
- package/dist/knowledge.d.ts +315 -0
- package/dist/knowledge.d.ts.map +1 -0
- package/dist/knowledge.js +111 -0
- package/dist/knowledge.js.map +1 -0
- package/dist/knowledge.test.d.ts +2 -0
- package/dist/knowledge.test.d.ts.map +1 -0
- package/dist/knowledge.test.js +22 -0
- package/dist/knowledge.test.js.map +1 -0
- package/dist/node-metadata.d.ts +3096 -0
- package/dist/node-metadata.d.ts.map +1 -0
- package/dist/node-metadata.js +184 -0
- package/dist/node-metadata.js.map +1 -0
- package/dist/node-metadata.test.d.ts +2 -0
- package/dist/node-metadata.test.d.ts.map +1 -0
- package/dist/node-metadata.test.js +126 -0
- package/dist/node-metadata.test.js.map +1 -0
- package/dist/observability.d.ts +154 -0
- package/dist/observability.d.ts.map +1 -0
- package/dist/observability.js +34 -0
- package/dist/observability.js.map +1 -0
- package/dist/pii.d.ts +88 -0
- package/dist/pii.d.ts.map +1 -0
- package/dist/pii.js +42 -0
- package/dist/pii.js.map +1 -0
- package/dist/principal.d.ts +81 -0
- package/dist/principal.d.ts.map +1 -0
- package/dist/principal.js +48 -0
- package/dist/principal.js.map +1 -0
- package/dist/principal.test.d.ts +2 -0
- package/dist/principal.test.d.ts.map +1 -0
- package/dist/principal.test.js +44 -0
- package/dist/principal.test.js.map +1 -0
- package/dist/registries.d.ts +26 -0
- package/dist/registries.d.ts.map +1 -0
- package/dist/registries.js +11 -0
- package/dist/registries.js.map +1 -0
- package/dist/router.d.ts +48 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +22 -0
- package/dist/router.js.map +1 -0
- package/dist/runs.d.ts +270 -0
- package/dist/runs.d.ts.map +1 -0
- package/dist/runs.js +108 -0
- package/dist/runs.js.map +1 -0
- package/dist/runs.test.d.ts +2 -0
- package/dist/runs.test.d.ts.map +1 -0
- package/dist/runs.test.js +79 -0
- package/dist/runs.test.js.map +1 -0
- package/dist/search.d.ts +88 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +23 -0
- package/dist/search.js.map +1 -0
- package/dist/skills.d.ts +208 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/skills.js +63 -0
- package/dist/skills.js.map +1 -0
- package/dist/tenant.d.ts +204 -0
- package/dist/tenant.d.ts.map +1 -0
- package/dist/tenant.js +46 -0
- package/dist/tenant.js.map +1 -0
- package/package.json +33 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* A document stored in the knowledge base (without its embedding vector). Carries the
|
|
4
|
+
* Open Knowledge Format (OKF) frontmatter so a bundle round-trips: `type` (OKF's only
|
|
5
|
+
* required field), plus the recommended `title`/`description`/`resource`/`tags`/`timestamp`,
|
|
6
|
+
* the bundle-relative `path`, the markdown cross-reference `links`, and any extra producer
|
|
7
|
+
* keys preserved in `frontmatter`.
|
|
8
|
+
*/
|
|
9
|
+
export const KbDocumentDtoSchema = z.object({
|
|
10
|
+
id: z.string().min(1),
|
|
11
|
+
namespace: z.string().min(1),
|
|
12
|
+
content: z.string(),
|
|
13
|
+
type: z.string().min(1),
|
|
14
|
+
title: z.string().optional(),
|
|
15
|
+
description: z.string().optional(),
|
|
16
|
+
resource: z.string().optional(),
|
|
17
|
+
timestamp: z.string().optional(),
|
|
18
|
+
path: z.string().optional(),
|
|
19
|
+
tags: z.array(z.string()).optional(),
|
|
20
|
+
links: z.array(z.string()).optional(),
|
|
21
|
+
createdAt: z.string().datetime()
|
|
22
|
+
});
|
|
23
|
+
/** A single semantic-search hit: the matched document and its cosine score (1 = identical). */
|
|
24
|
+
export const KbSearchHitDtoSchema = z.object({
|
|
25
|
+
id: z.string().min(1),
|
|
26
|
+
content: z.string(),
|
|
27
|
+
score: z.number(),
|
|
28
|
+
type: z.string().optional(),
|
|
29
|
+
title: z.string().optional()
|
|
30
|
+
});
|
|
31
|
+
/**
|
|
32
|
+
* Body for ingesting raw documents into a namespace — each is embedded then stored. `.max(500)`
|
|
33
|
+
* (issue #453, security audit 2026-07-20 MEDIUM finding): the array itself had no upper bound,
|
|
34
|
+
* so a single request could enqueue an unbounded embedding workload. 500 comfortably covers a
|
|
35
|
+
* real batch ingest without leaving the endpoint effectively unbounded.
|
|
36
|
+
*/
|
|
37
|
+
export const IngestKbDocumentsDtoSchema = z.object({
|
|
38
|
+
documents: z
|
|
39
|
+
.array(z.object({
|
|
40
|
+
id: z.string().min(1).optional(),
|
|
41
|
+
content: z.string().min(1)
|
|
42
|
+
}))
|
|
43
|
+
.min(1)
|
|
44
|
+
.max(500)
|
|
45
|
+
});
|
|
46
|
+
/** One file of an OKF bundle: a bundle-relative path and its raw markdown contents. */
|
|
47
|
+
export const OkfFileSchema = z.object({
|
|
48
|
+
path: z.string().min(1),
|
|
49
|
+
content: z.string()
|
|
50
|
+
});
|
|
51
|
+
/** Body for ingesting an OKF bundle — a set of markdown (+frontmatter) files. */
|
|
52
|
+
export const IngestOkfBundleDtoSchema = z.object({
|
|
53
|
+
// Same unbounded-array gap as IngestKbDocumentsDtoSchema.documents (issue #453) — capped for
|
|
54
|
+
// the same reason: a client-supplied file array with no upper bound.
|
|
55
|
+
files: z.array(OkfFileSchema).min(1).max(500)
|
|
56
|
+
});
|
|
57
|
+
/** An OKF bundle returned by export — markdown files reconstructed from stored documents. */
|
|
58
|
+
export const OkfBundleDtoSchema = z.object({
|
|
59
|
+
files: z.array(OkfFileSchema)
|
|
60
|
+
});
|
|
61
|
+
/** Body for ingesting a web page by URL — fetched, stripped to text, stored with provenance. */
|
|
62
|
+
export const IngestUrlDtoSchema = z.object({
|
|
63
|
+
url: z.string().url(),
|
|
64
|
+
title: z.string().optional()
|
|
65
|
+
});
|
|
66
|
+
/**
|
|
67
|
+
* Body for ingesting records from a JSON HTTP API (the generic SaaS-connector substrate:
|
|
68
|
+
* Slack/Notion/HubSpot are this with their base URL + a bearer header). Fetches `url`,
|
|
69
|
+
* walks `itemsPath` to an array, and maps each record's fields to an OKF document.
|
|
70
|
+
*/
|
|
71
|
+
export const IngestApiDtoSchema = z.object({
|
|
72
|
+
url: z.string().url(),
|
|
73
|
+
/** Dot path to the array of records (omit when the body is itself the array/object). */
|
|
74
|
+
itemsPath: z.string().optional(),
|
|
75
|
+
/** Field holding each record's text content. */
|
|
76
|
+
contentField: z.string().min(1),
|
|
77
|
+
idField: z.string().optional(),
|
|
78
|
+
titleField: z.string().optional(),
|
|
79
|
+
/** Extra request headers, e.g. `{ "authorization": "Bearer <token>" }`. */
|
|
80
|
+
headers: z.record(z.string(), z.string()).optional()
|
|
81
|
+
});
|
|
82
|
+
/** A node of the knowledge graph (a KB document). */
|
|
83
|
+
export const KbGraphNodeSchema = z.object({
|
|
84
|
+
id: z.string().min(1),
|
|
85
|
+
title: z.string().optional(),
|
|
86
|
+
type: z.string()
|
|
87
|
+
});
|
|
88
|
+
/** A typed edge of the knowledge graph: `from --type--> to`. */
|
|
89
|
+
export const KbGraphEdgeSchema = z.object({
|
|
90
|
+
from: z.string().min(1),
|
|
91
|
+
to: z.string().min(1),
|
|
92
|
+
type: z.string()
|
|
93
|
+
});
|
|
94
|
+
/** The knowledge graph of a namespace: typed relations between documents. */
|
|
95
|
+
export const KbGraphDtoSchema = z.object({
|
|
96
|
+
nodes: z.array(KbGraphNodeSchema),
|
|
97
|
+
edges: z.array(KbGraphEdgeSchema)
|
|
98
|
+
});
|
|
99
|
+
/** Body for activation: search the KB for `query` and push the hits to a downstream webhook. */
|
|
100
|
+
export const ActivateDtoSchema = z.object({
|
|
101
|
+
query: z.string().min(1),
|
|
102
|
+
webhookUrl: z.string().url(),
|
|
103
|
+
k: z.number().int().min(1).max(20).optional()
|
|
104
|
+
});
|
|
105
|
+
/** Result of an activation delivery. */
|
|
106
|
+
export const ActivationResultDtoSchema = z.object({
|
|
107
|
+
delivered: z.boolean(),
|
|
108
|
+
status: z.number().int(),
|
|
109
|
+
hits: z.number().int().min(0)
|
|
110
|
+
});
|
|
111
|
+
//# sourceMappingURL=knowledge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../src/knowledge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge.test.d.ts","sourceRoot":"","sources":["../src/knowledge.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { IngestKbDocumentsDtoSchema, IngestOkfBundleDtoSchema } from "./knowledge.js";
|
|
3
|
+
describe("IngestKbDocumentsDtoSchema (issue #453 — bounded documents array)", () => {
|
|
4
|
+
it("accepts a batch within the 500-document cap", () => {
|
|
5
|
+
const documents = Array.from({ length: 500 }, (_, i) => ({ content: `doc-${i}` }));
|
|
6
|
+
expect(() => IngestKbDocumentsDtoSchema.parse({ documents })).not.toThrow();
|
|
7
|
+
});
|
|
8
|
+
it("rejects a batch over the 500-document cap", () => {
|
|
9
|
+
const documents = Array.from({ length: 501 }, (_, i) => ({ content: `doc-${i}` }));
|
|
10
|
+
expect(() => IngestKbDocumentsDtoSchema.parse({ documents })).toThrow();
|
|
11
|
+
});
|
|
12
|
+
it("still rejects an empty batch (pre-existing .min(1))", () => {
|
|
13
|
+
expect(() => IngestKbDocumentsDtoSchema.parse({ documents: [] })).toThrow();
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
describe("IngestOkfBundleDtoSchema (issue #453 — bounded files array)", () => {
|
|
17
|
+
it("rejects a bundle over the 500-file cap", () => {
|
|
18
|
+
const files = Array.from({ length: 501 }, (_, i) => ({ path: `f${i}.md`, content: "x" }));
|
|
19
|
+
expect(() => IngestOkfBundleDtoSchema.parse({ files })).toThrow();
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
//# sourceMappingURL=knowledge.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge.test.js","sourceRoot":"","sources":["../src/knowledge.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAEtF,QAAQ,CAAC,mEAAmE,EAAE,GAAG,EAAE;IACjF,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACnF,MAAM,CAAC,GAAG,EAAE,CAAC,0BAA0B,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACnF,MAAM,CAAC,GAAG,EAAE,CAAC,0BAA0B,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,GAAG,EAAE,CAAC,0BAA0B,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,6DAA6D,EAAE,GAAG,EAAE;IAC3E,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1F,MAAM,CAAC,GAAG,EAAE,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|