@native-knowledge/knowledge-sdk 0.0.0-stage → 0.1.0-rc.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.
- package/LICENSE +202 -0
- package/NOTICE +29 -0
- package/README.md +34 -2
- package/dist/agent-entry.d.ts +291 -0
- package/dist/agent-entry.js +153 -0
- package/dist/agent-guidance-error.d.ts +15 -0
- package/dist/agent-guidance-error.js +46 -0
- package/dist/auth.d.ts +124 -0
- package/dist/auth.js +165 -0
- package/dist/index.d.ts +290 -0
- package/dist/index.js +166 -0
- package/dist/internal/contracts/artifact.d.ts +120 -0
- package/dist/internal/contracts/artifact.js +103 -0
- package/dist/internal/contracts/collection-control.d.ts +160 -0
- package/dist/internal/contracts/collection-control.js +69 -0
- package/dist/internal/contracts/collection.d.ts +263 -0
- package/dist/internal/contracts/collection.js +174 -0
- package/dist/internal/contracts/common.d.ts +17 -0
- package/dist/internal/contracts/common.js +16 -0
- package/dist/internal/contracts/currentness.d.ts +477 -0
- package/dist/internal/contracts/currentness.js +221 -0
- package/dist/internal/contracts/event.d.ts +60 -0
- package/dist/internal/contracts/event.js +35 -0
- package/dist/internal/contracts/evidence.d.ts +202 -0
- package/dist/internal/contracts/evidence.js +171 -0
- package/dist/internal/contracts/index.d.ts +54 -0
- package/dist/internal/contracts/index.js +54 -0
- package/dist/internal/contracts/material-capability.d.ts +88 -0
- package/dist/internal/contracts/material-capability.js +8 -0
- package/dist/internal/contracts/material-carrier.d.ts +104 -0
- package/dist/internal/contracts/material-carrier.js +15 -0
- package/dist/internal/contracts/material-context.d.ts +28 -0
- package/dist/internal/contracts/material-context.js +9 -0
- package/dist/internal/contracts/material-read.d.ts +152 -0
- package/dist/internal/contracts/material-read.js +12 -0
- package/dist/internal/contracts/observation.d.ts +75 -0
- package/dist/internal/contracts/observation.js +39 -0
- package/dist/internal/contracts/persistence.d.ts +370 -0
- package/dist/internal/contracts/persistence.js +239 -0
- package/dist/internal/contracts/project-intent.d.ts +218 -0
- package/dist/internal/contracts/project-intent.js +121 -0
- package/dist/internal/contracts/projection.d.ts +380 -0
- package/dist/internal/contracts/projection.js +194 -0
- package/dist/internal/contracts/public-reference.d.ts +237 -0
- package/dist/internal/contracts/public-reference.js +87 -0
- package/dist/internal/contracts/reference-record.d.ts +124 -0
- package/dist/internal/contracts/reference-record.js +55 -0
- package/dist/internal/contracts/remote-file.d.ts +128 -0
- package/dist/internal/contracts/remote-file.js +159 -0
- package/dist/internal/contracts/resource-scope.d.ts +40 -0
- package/dist/internal/contracts/resource-scope.js +38 -0
- package/dist/internal/contracts/review-packet.d.ts +274 -0
- package/dist/internal/contracts/review-packet.js +61 -0
- package/dist/internal/contracts/review-plane.d.ts +90 -0
- package/dist/internal/contracts/review-plane.js +89 -0
- package/dist/internal/contracts/rich-document.d.ts +641 -0
- package/dist/internal/contracts/rich-document.js +184 -0
- package/dist/internal/contracts/runtime-compatibility.d.ts +22 -0
- package/dist/internal/contracts/runtime-compatibility.js +55 -0
- package/dist/internal/contracts/runtime.d.ts +59 -0
- package/dist/internal/contracts/runtime.js +68 -0
- package/dist/internal/contracts/scheduler.d.ts +348 -0
- package/dist/internal/contracts/scheduler.js +256 -0
- package/dist/internal/contracts/signal.d.ts +113 -0
- package/dist/internal/contracts/signal.js +77 -0
- package/dist/internal/contracts/source-governance.d.ts +375 -0
- package/dist/internal/contracts/source-governance.js +194 -0
- package/dist/internal/contracts/source.d.ts +62 -0
- package/dist/internal/contracts/source.js +32 -0
- package/dist/internal/contracts/tenant-budget.d.ts +59 -0
- package/dist/internal/contracts/tenant-budget.js +34 -0
- package/dist/internal/contracts/tenant-collection-request.d.ts +209 -0
- package/dist/internal/contracts/tenant-collection-request.js +58 -0
- package/dist/internal/contracts/tenant-collection.d.ts +199 -0
- package/dist/internal/contracts/tenant-collection.js +66 -0
- package/dist/internal/contracts/tenant-currentness.d.ts +117 -0
- package/dist/internal/contracts/tenant-currentness.js +26 -0
- package/dist/internal/contracts/tenant-management.d.ts +286 -0
- package/dist/internal/contracts/tenant-management.js +27 -0
- package/dist/internal/contracts/tenant-material-api.d.ts +584 -0
- package/dist/internal/contracts/tenant-material-api.js +46 -0
- package/dist/internal/contracts/tenant-material-json-schema.js +16 -0
- package/dist/internal/contracts/tenant-pdf-text.d.ts +27 -0
- package/dist/internal/contracts/tenant-pdf-text.js +13 -0
- package/dist/internal/contracts/tenant-project-control.d.ts +94 -0
- package/dist/internal/contracts/tenant-project-control.js +19 -0
- package/dist/internal/contracts/tenant-public-reference.d.ts +179 -0
- package/dist/internal/contracts/tenant-public-reference.js +26 -0
- package/dist/internal/contracts/tenant-resource-api.d.ts +738 -0
- package/dist/internal/contracts/tenant-resource-api.js +70 -0
- package/dist/internal/contracts/tenant-resource.d.ts +298 -0
- package/dist/internal/contracts/tenant-resource.js +118 -0
- package/dist/internal/contracts/tenant-rich-document.d.ts +317 -0
- package/dist/internal/contracts/tenant-rich-document.js +17 -0
- package/dist/internal/contracts/tenant-source-binding.d.ts +44 -0
- package/dist/internal/contracts/tenant-source-binding.js +33 -0
- package/dist/internal/contracts/tenant-source-bridge.d.ts +70 -0
- package/dist/internal/contracts/tenant-source-bridge.js +9 -0
- package/dist/internal/contracts/tenant-source-cutover.d.ts +226 -0
- package/dist/internal/contracts/tenant-source-cutover.js +26 -0
- package/dist/internal/contracts/tenant-source-document.d.ts +163 -0
- package/dist/internal/contracts/tenant-source-document.js +38 -0
- package/dist/internal/contracts/tenant-source-lease.d.ts +1 -0
- package/dist/internal/contracts/tenant-source-lease.js +5 -0
- package/dist/internal/contracts/tenant-source.d.ts +223 -0
- package/dist/internal/contracts/tenant-source.js +83 -0
- package/dist/internal/contracts/tenant-web-collection.d.ts +287 -0
- package/dist/internal/contracts/tenant-web-collection.js +118 -0
- package/dist/internal/contracts/tenant-web-content-plan.d.ts +86 -0
- package/dist/internal/contracts/tenant-web-content-plan.js +39 -0
- package/dist/internal/contracts/tenant-web-content-result.d.ts +63 -0
- package/dist/internal/contracts/tenant-web-content-result.js +15 -0
- package/dist/internal/contracts/tenant-web-content.d.ts +383 -0
- package/dist/internal/contracts/tenant-web-content.js +16 -0
- package/dist/internal/contracts/tenant-web-crawl.d.ts +310 -0
- package/dist/internal/contracts/tenant-web-crawl.js +55 -0
- package/dist/internal/contracts/tenant-web-dynamic.d.ts +698 -0
- package/dist/internal/contracts/tenant-web-dynamic.js +68 -0
- package/dist/internal/contracts/tenant-web-results.d.ts +66 -0
- package/dist/internal/contracts/tenant-web-results.js +41 -0
- package/dist/internal/contracts/tenant-web-workflow.d.ts +494 -0
- package/dist/internal/contracts/tenant-web-workflow.js +29 -0
- package/dist/internal/serving-contracts/agent-catalog.d.ts +70 -0
- package/dist/internal/serving-contracts/agent-catalog.js +56 -0
- package/dist/internal/serving-contracts/agent-entry.d.ts +13148 -0
- package/dist/internal/serving-contracts/agent-entry.js +57 -0
- package/dist/internal/serving-contracts/agent-guidance-shapes.d.ts +263 -0
- package/dist/internal/serving-contracts/agent-guidance-shapes.js +12 -0
- package/dist/internal/serving-contracts/agent-input-hints.d.ts +24 -0
- package/dist/internal/serving-contracts/agent-input-hints.js +104 -0
- package/dist/internal/serving-contracts/body-search.d.ts +231 -0
- package/dist/internal/serving-contracts/body-search.js +16 -0
- package/dist/internal/serving-contracts/consumer.d.ts +989 -0
- package/dist/internal/serving-contracts/consumer.js +45 -0
- package/dist/internal/serving-contracts/core.d.ts +333 -0
- package/dist/internal/serving-contracts/core.js +76 -0
- package/dist/internal/serving-contracts/http.d.ts +2874 -0
- package/dist/internal/serving-contracts/http.js +64 -0
- package/dist/internal/serving-contracts/index.d.ts +24 -0
- package/dist/internal/serving-contracts/index.js +25 -0
- package/dist/internal/serving-contracts/management.d.ts +424 -0
- package/dist/internal/serving-contracts/management.js +15 -0
- package/dist/internal/serving-contracts/material-capabilities.d.ts +508 -0
- package/dist/internal/serving-contracts/material-capabilities.js +14 -0
- package/dist/internal/serving-contracts/material-index-status.d.ts +55 -0
- package/dist/internal/serving-contracts/material-index-status.js +5 -0
- package/dist/internal/serving-contracts/mcp.d.ts +2218 -0
- package/dist/internal/serving-contracts/mcp.js +140 -0
- package/dist/internal/serving-contracts/tenant-governance.d.ts +236 -0
- package/dist/internal/serving-contracts/tenant-governance.js +13 -0
- package/dist/internal/serving-contracts/tenant-management.d.ts +6276 -0
- package/dist/internal/serving-contracts/tenant-management.js +89 -0
- package/dist/internal/serving-contracts/tenant-project.d.ts +7550 -0
- package/dist/internal/serving-contracts/tenant-project.js +39 -0
- package/dist/internal/serving-contracts/tenant-runtime.d.ts +9674 -0
- package/dist/internal/serving-contracts/tenant-runtime.js +37 -0
- package/dist/internal/serving-contracts/tenant-session.d.ts +87 -0
- package/dist/internal/serving-contracts/tenant-session.js +8 -0
- package/dist/internal/serving-contracts/tenant-web-content.d.ts +4606 -0
- package/dist/internal/serving-contracts/tenant-web-content.js +20 -0
- package/dist/internal/serving-contracts/tenant-web-crawl.d.ts +2958 -0
- package/dist/internal/serving-contracts/tenant-web-crawl.js +13 -0
- package/dist/internal/serving-contracts/tenant-web-dynamic.d.ts +3902 -0
- package/dist/internal/serving-contracts/tenant-web-dynamic.js +20 -0
- package/dist/internal/serving-contracts/tenant-web-workflow.d.ts +5750 -0
- package/dist/internal/serving-contracts/tenant-web-workflow.js +36 -0
- package/dist/internal/serving-contracts/tenant-web.d.ts +6418 -0
- package/dist/internal/serving-contracts/tenant-web.js +53 -0
- package/dist/internal/serving-contracts/tenant-workspace.d.ts +6451 -0
- package/dist/internal/serving-contracts/tenant-workspace.js +28 -0
- package/dist/internal/serving-contracts/workflow.d.ts +439 -0
- package/dist/internal/serving-contracts/workflow.js +37 -0
- package/dist/material-stream.d.ts +18 -0
- package/dist/material-stream.js +29 -0
- package/dist/oauth.d.ts +268 -0
- package/dist/oauth.js +539 -0
- package/dist/resource.d.ts +88 -0
- package/dist/resource.js +123 -0
- package/dist/session.d.ts +4 -0
- package/dist/session.js +3 -0
- package/dist/tenant-client.d.ts +169 -0
- package/dist/tenant-client.js +58 -0
- package/dist/tenant-management.d.ts +240 -0
- package/dist/tenant-management.js +149 -0
- package/dist/tenant-project.d.ts +57 -0
- package/dist/tenant-project.js +63 -0
- package/dist/tenant-runtime.d.ts +174 -0
- package/dist/tenant-runtime.js +17 -0
- package/dist/tenant-web-content.d.ts +44 -0
- package/dist/tenant-web-content.js +70 -0
- package/dist/tenant-web-crawl.d.ts +42 -0
- package/dist/tenant-web-crawl.js +39 -0
- package/dist/tenant-web-dynamic.d.ts +42 -0
- package/dist/tenant-web-dynamic.js +39 -0
- package/dist/tenant-web-workflow.d.ts +43 -0
- package/dist/tenant-web-workflow.js +63 -0
- package/dist/tenant-web.d.ts +42 -0
- package/dist/tenant-web.js +39 -0
- package/dist/tenant-workspace.d.ts +36 -0
- package/dist/tenant-workspace.js +21 -0
- package/dist/token-provider.d.ts +14 -0
- package/dist/token-provider.js +21 -0
- package/package.json +45 -3
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** Provider18 adds explicit metadata reads; Provider17 remains the exact original twenty tools. */
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { tenantResourceRefSchema, tenantSourceIdSchema, collectionRefreshSchema, stableUriSchema, isoDateTimeSchema, materialTenantIdSchema } from '../contracts/index.js';
|
|
4
|
+
import { tenantManagementToolSchemas, tenantManagementDataSchemas, tenantManagementScopesForInput, tenantManagementAuthorization, tenantManagementProviderBaseSchema, tenantManagementErrorSchema } from './tenant-management.js';
|
|
5
|
+
const page = { after: z.string().min(1).max(4096).optional(), limit: z.number().int().min(1).max(100).optional() };
|
|
6
|
+
export const tenantWorkStageSchema = z.enum(['ALL', 'RESEARCH', 'DRAFT', 'READY_FOR_REVIEW', 'REWORK_REQUIRED', 'APPROVED']);
|
|
7
|
+
export const tenantWorkspaceExtraToolSchemas = { tenant_source_inventory: z.object(page).strict(), tenant_work_queue: z.object({ ...page, stage: tenantWorkStageSchema.default('ALL') }).strict() };
|
|
8
|
+
const source = z.object({ sourceId: tenantSourceIdSchema, title: z.string().min(1).max(512).nullable(), revisionRef: stableUriSchema.nullable(), generation: z.number().int().positive().safe().nullable(), paused: z.boolean().nullable(), tenantEnabled: z.boolean().nullable(), refresh: collectionRefreshSchema.nullable(), canonicalState: z.enum(['READY', 'UNAVAILABLE', 'INTEGRITY_MISMATCH']) }).strict();
|
|
9
|
+
const artifact = z.object({ ref: tenantResourceRefSchema, title: z.string().max(512), kind: z.string().max(128).nullable(), status: z.string().max(128).nullable(), version: z.number().int().positive().safe().nullable(), recordedAt: isoDateTimeSchema.nullable(), availability: z.enum(['READY', 'UNAVAILABLE', 'INTEGRITY_MISMATCH']), succession: z.enum(['SUCCESSOR_VISIBLE', 'NO_VISIBLE_SUCCESSOR', 'UNCONFIRMED']) }).strict();
|
|
10
|
+
export const tenantWorkspaceExtraDataSchemas = {
|
|
11
|
+
tenant_source_inventory: z.object({ items: z.array(source).max(100), nextAfter: z.string().max(4096).nullable(), coverage: z.literal('REGISTERED_TENANT_SOURCES') }).strict(),
|
|
12
|
+
tenant_work_queue: z.object({ items: z.array(artifact).max(100), nextAfter: z.string().max(4096).nullable(), stage: tenantWorkStageSchema, candidateCount: z.number().int().min(0).max(100), coverage: z.literal('AUTHORIZED_NATIVE_ARTIFACT_METADATA'), total: z.null() }).strict(),
|
|
13
|
+
};
|
|
14
|
+
export const tenantWorkspaceToolSchemas = { ...tenantManagementToolSchemas, ...tenantWorkspaceExtraToolSchemas };
|
|
15
|
+
export const tenantWorkspaceDataSchemas = { ...tenantManagementDataSchemas, ...tenantWorkspaceExtraDataSchemas };
|
|
16
|
+
export function tenantWorkspaceScopesForInput(name, raw) { if (name === 'tenant_source_inventory') {
|
|
17
|
+
tenantWorkspaceExtraToolSchemas[name].parse(raw);
|
|
18
|
+
return ['knowledge.source.read'];
|
|
19
|
+
} if (name === 'tenant_work_queue') {
|
|
20
|
+
tenantWorkspaceExtraToolSchemas[name].parse(raw);
|
|
21
|
+
return ['knowledge.workflow.read'];
|
|
22
|
+
} return tenantManagementScopesForInput(name, raw); }
|
|
23
|
+
export function tenantWorkspaceAuthorization(name) { return name === 'tenant_source_inventory' || name === 'tenant_work_queue' ? { selection: 'FIXED', scopeAlternatives: [[name === 'tenant_source_inventory' ? 'knowledge.source.read' : 'knowledge.workflow.read']] } : tenantManagementAuthorization(name); }
|
|
24
|
+
export function tenantWorkspaceEnvelopeSchema(tool) { return z.object({ schemaVersion: z.literal(2), tenantId: materialTenantIdSchema, tool: z.literal(tool), data: tenantWorkspaceDataSchemas[tool] }).strict(); }
|
|
25
|
+
export const tenantWorkspaceInputJsonSchemas = Object.fromEntries(Object.entries(tenantWorkspaceToolSchemas).map(([name, schema]) => [name, z.toJSONSchema(schema, { target: 'draft-07' })]));
|
|
26
|
+
export const tenantWorkspaceOutputJsonSchemas = Object.fromEntries(Object.keys(tenantWorkspaceToolSchemas).map(name => [name, { type: 'object', oneOf: [z.toJSONSchema(tenantWorkspaceEnvelopeSchema(name), { target: 'draft-07' }), z.toJSONSchema(tenantManagementErrorSchema, { target: 'draft-07' })] }]));
|
|
27
|
+
export const tenantWorkspaceProviderSchema = tenantManagementProviderBaseSchema.extend({ schemaVersion: z.literal(18), tools: z.array(z.string()).length(Object.keys(tenantWorkspaceToolSchemas).length), capabilities: z.tuple([z.literal('TENANT_MANAGEMENT_V1'), z.literal('TENANT_WORKFLOW_V1'), z.literal('TENANT_CURRENTNESS_V2'), z.literal('TENANT_SOURCE_V1'), z.literal('TENANT_WORKSPACE_METADATA_V1')]) }).strict().superRefine((value, ctx) => { if (new Set(value.tools).size !== Object.keys(tenantWorkspaceToolSchemas).length || value.tools.some(name => !Object.hasOwn(tenantWorkspaceToolSchemas, name)))
|
|
28
|
+
ctx.addIssue({ code: 'custom', message: 'Workspace tools must match the exact version18 contract' }); });
|
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
/** Agent 的治理合同描述真实状态和下一步,不把写入权限解释为审核或正文权限。 */
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
export declare const workflowPlanInputSchema: z.ZodObject<{
|
|
4
|
+
projectRef: z.ZodString;
|
|
5
|
+
ref: z.ZodString;
|
|
6
|
+
}, z.core.$strict>;
|
|
7
|
+
export declare const workflowGuideInputSchema: z.ZodObject<{
|
|
8
|
+
projectRef: z.ZodString;
|
|
9
|
+
}, z.core.$strict>;
|
|
10
|
+
export declare const workflowActionSchema: z.ZodEnum<{
|
|
11
|
+
SUBMIT_REVIEW: "SUBMIT_REVIEW";
|
|
12
|
+
FINALIZE_REVIEW: "FINALIZE_REVIEW";
|
|
13
|
+
PREPARE_SOURCE: "PREPARE_SOURCE";
|
|
14
|
+
REGISTER: "REGISTER";
|
|
15
|
+
}>;
|
|
16
|
+
export declare const workflowAdvanceInputSchema: z.ZodObject<{
|
|
17
|
+
projectRef: z.ZodString;
|
|
18
|
+
ref: z.ZodString;
|
|
19
|
+
action: z.ZodEnum<{
|
|
20
|
+
SUBMIT_REVIEW: "SUBMIT_REVIEW";
|
|
21
|
+
FINALIZE_REVIEW: "FINALIZE_REVIEW";
|
|
22
|
+
PREPARE_SOURCE: "PREPARE_SOURCE";
|
|
23
|
+
REGISTER: "REGISTER";
|
|
24
|
+
}>;
|
|
25
|
+
expectedVersion: z.ZodOptional<z.ZodNumber>;
|
|
26
|
+
actedAt: z.ZodOptional<z.ZodISODateTime>;
|
|
27
|
+
}, z.core.$strict>;
|
|
28
|
+
export declare const agentSubmitInputSchema: z.ZodObject<{
|
|
29
|
+
projectRef: z.ZodString;
|
|
30
|
+
sourceId: z.ZodString;
|
|
31
|
+
contentBase64: z.ZodString;
|
|
32
|
+
mediaType: z.ZodString;
|
|
33
|
+
access: z.ZodDefault<z.ZodEnum<{
|
|
34
|
+
PUBLIC: "PUBLIC";
|
|
35
|
+
TENANT: "TENANT";
|
|
36
|
+
INTERNAL: "INTERNAL";
|
|
37
|
+
FDE_INTERNAL: "FDE_INTERNAL";
|
|
38
|
+
}>>;
|
|
39
|
+
submittedAt: z.ZodOptional<z.ZodISODateTime>;
|
|
40
|
+
freshnessSeconds: z.ZodOptional<z.ZodNumber>;
|
|
41
|
+
}, z.core.$strict>;
|
|
42
|
+
export declare const workflowNextActionSchema: z.ZodObject<{
|
|
43
|
+
id: z.ZodString;
|
|
44
|
+
tool: z.ZodNullable<z.ZodString>;
|
|
45
|
+
arguments: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
|
|
46
|
+
requiredScopes: z.ZodArray<z.ZodString>;
|
|
47
|
+
missingScopes: z.ZodArray<z.ZodString>;
|
|
48
|
+
missingFields: z.ZodArray<z.ZodString>;
|
|
49
|
+
canExecute: z.ZodBoolean;
|
|
50
|
+
automatic: z.ZodBoolean;
|
|
51
|
+
reasonCode: z.ZodString;
|
|
52
|
+
cli: z.ZodObject<{
|
|
53
|
+
command: z.ZodString;
|
|
54
|
+
flags: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
|
|
55
|
+
}, z.core.$strict>;
|
|
56
|
+
http: z.ZodObject<{
|
|
57
|
+
method: z.ZodLiteral<"POST">;
|
|
58
|
+
path: z.ZodLiteral<"/mcp/management">;
|
|
59
|
+
tool: z.ZodNullable<z.ZodString>;
|
|
60
|
+
}, z.core.$strict>;
|
|
61
|
+
}, z.core.$strict>;
|
|
62
|
+
declare const readDecision: z.ZodObject<{
|
|
63
|
+
action: z.ZodEnum<{
|
|
64
|
+
ALLOW: "ALLOW";
|
|
65
|
+
REVIEW_REQUIRED: "REVIEW_REQUIRED";
|
|
66
|
+
DENY: "DENY";
|
|
67
|
+
}>;
|
|
68
|
+
reasonCodes: z.ZodArray<z.ZodString>;
|
|
69
|
+
authority: z.ZodEnum<{
|
|
70
|
+
AUTHENTICATED_READER: "AUTHENTICATED_READER";
|
|
71
|
+
LOCAL_PROFILE_SIMULATION: "LOCAL_PROFILE_SIMULATION";
|
|
72
|
+
}>;
|
|
73
|
+
}, z.core.$strict>;
|
|
74
|
+
export declare const workflowPlanSchema: z.ZodObject<{
|
|
75
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
76
|
+
projectRef: z.ZodString;
|
|
77
|
+
ref: z.ZodString;
|
|
78
|
+
contentHash: z.ZodString;
|
|
79
|
+
kind: z.ZodString;
|
|
80
|
+
version: z.ZodNullable<z.ZodNumber>;
|
|
81
|
+
status: z.ZodUnion<[z.ZodEnum<{
|
|
82
|
+
GENERATED: "GENERATED";
|
|
83
|
+
DRAFT: "DRAFT";
|
|
84
|
+
READY_FOR_REVIEW: "READY_FOR_REVIEW";
|
|
85
|
+
REWORK_REQUIRED: "REWORK_REQUIRED";
|
|
86
|
+
APPROVED: "APPROVED";
|
|
87
|
+
REJECTED: "REJECTED";
|
|
88
|
+
SUPERSEDED: "SUPERSEDED";
|
|
89
|
+
}>, z.ZodEnum<{
|
|
90
|
+
RAW_MATERIAL: "RAW_MATERIAL";
|
|
91
|
+
RAW_EVIDENCE: "RAW_EVIDENCE";
|
|
92
|
+
}>]>;
|
|
93
|
+
productionPhase: z.ZodEnum<{
|
|
94
|
+
REGISTERED: "REGISTERED";
|
|
95
|
+
PERSISTED: "PERSISTED";
|
|
96
|
+
CATALOG_PROJECTED: "CATALOG_PROJECTED";
|
|
97
|
+
}>;
|
|
98
|
+
rawMaterialAvailable: z.ZodNullable<z.ZodBoolean>;
|
|
99
|
+
readiness: z.ZodNullable<z.ZodObject<{
|
|
100
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
101
|
+
profile: z.ZodEnum<{
|
|
102
|
+
HUMAN_ARTICLE_V1: "HUMAN_ARTICLE_V1";
|
|
103
|
+
KNOWLEDGE_CARD_V1: "KNOWLEDGE_CARD_V1";
|
|
104
|
+
}>;
|
|
105
|
+
ready: z.ZodBoolean;
|
|
106
|
+
reasons: z.ZodArray<z.ZodEnum<{
|
|
107
|
+
ROLE_MISMATCH: "ROLE_MISMATCH";
|
|
108
|
+
TITLE_REQUIRED: "TITLE_REQUIRED";
|
|
109
|
+
SUMMARY_REQUIRED: "SUMMARY_REQUIRED";
|
|
110
|
+
TEXT_TOO_SHORT: "TEXT_TOO_SHORT";
|
|
111
|
+
STRUCTURE_TOO_THIN: "STRUCTURE_TOO_THIN";
|
|
112
|
+
SOURCE_EVIDENCE_REQUIRED: "SOURCE_EVIDENCE_REQUIRED";
|
|
113
|
+
CITATION_COVERAGE_REQUIRED: "CITATION_COVERAGE_REQUIRED";
|
|
114
|
+
EVIDENCE_MISMATCH: "EVIDENCE_MISMATCH";
|
|
115
|
+
MEDIA_UNAVAILABLE: "MEDIA_UNAVAILABLE";
|
|
116
|
+
}>>;
|
|
117
|
+
metrics: z.ZodObject<{
|
|
118
|
+
textCharacters: z.ZodNumber;
|
|
119
|
+
blockCount: z.ZodNumber;
|
|
120
|
+
textBlockCount: z.ZodNumber;
|
|
121
|
+
mediaBlockCount: z.ZodNumber;
|
|
122
|
+
sourceEvidenceCount: z.ZodNumber;
|
|
123
|
+
citationCount: z.ZodNumber;
|
|
124
|
+
citedBlockCount: z.ZodNumber;
|
|
125
|
+
}, z.core.$strict>;
|
|
126
|
+
}, z.core.$strict>>;
|
|
127
|
+
reviewRef: z.ZodNullable<z.ZodString>;
|
|
128
|
+
reviewDecision: z.ZodNullable<z.ZodEnum<{
|
|
129
|
+
PASS: "PASS";
|
|
130
|
+
REWORK: "REWORK";
|
|
131
|
+
REJECT: "REJECT";
|
|
132
|
+
}>>;
|
|
133
|
+
support: z.ZodNullable<z.ZodObject<{
|
|
134
|
+
action: z.ZodEnum<{
|
|
135
|
+
ALLOW: "ALLOW";
|
|
136
|
+
REVIEW_REQUIRED: "REVIEW_REQUIRED";
|
|
137
|
+
DENY: "DENY";
|
|
138
|
+
}>;
|
|
139
|
+
reasonCodes: z.ZodArray<z.ZodString>;
|
|
140
|
+
missingEvidenceRefs: z.ZodArray<z.ZodString>;
|
|
141
|
+
}, z.core.$strict>>;
|
|
142
|
+
governedPolicyReady: z.ZodBoolean;
|
|
143
|
+
consumerReadDecision: z.ZodNullable<z.ZodObject<{
|
|
144
|
+
action: z.ZodEnum<{
|
|
145
|
+
ALLOW: "ALLOW";
|
|
146
|
+
REVIEW_REQUIRED: "REVIEW_REQUIRED";
|
|
147
|
+
DENY: "DENY";
|
|
148
|
+
}>;
|
|
149
|
+
reasonCodes: z.ZodArray<z.ZodString>;
|
|
150
|
+
authority: z.ZodEnum<{
|
|
151
|
+
AUTHENTICATED_READER: "AUTHENTICATED_READER";
|
|
152
|
+
LOCAL_PROFILE_SIMULATION: "LOCAL_PROFILE_SIMULATION";
|
|
153
|
+
}>;
|
|
154
|
+
}, z.core.$strict>>;
|
|
155
|
+
externalReady: z.ZodBoolean;
|
|
156
|
+
successorRef: z.ZodNullable<z.ZodString>;
|
|
157
|
+
blockers: z.ZodArray<z.ZodString>;
|
|
158
|
+
nextActions: z.ZodArray<z.ZodObject<{
|
|
159
|
+
id: z.ZodString;
|
|
160
|
+
tool: z.ZodNullable<z.ZodString>;
|
|
161
|
+
arguments: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
|
|
162
|
+
requiredScopes: z.ZodArray<z.ZodString>;
|
|
163
|
+
missingScopes: z.ZodArray<z.ZodString>;
|
|
164
|
+
missingFields: z.ZodArray<z.ZodString>;
|
|
165
|
+
canExecute: z.ZodBoolean;
|
|
166
|
+
automatic: z.ZodBoolean;
|
|
167
|
+
reasonCode: z.ZodString;
|
|
168
|
+
cli: z.ZodObject<{
|
|
169
|
+
command: z.ZodString;
|
|
170
|
+
flags: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
|
|
171
|
+
}, z.core.$strict>;
|
|
172
|
+
http: z.ZodObject<{
|
|
173
|
+
method: z.ZodLiteral<"POST">;
|
|
174
|
+
path: z.ZodLiteral<"/mcp/management">;
|
|
175
|
+
tool: z.ZodNullable<z.ZodString>;
|
|
176
|
+
}, z.core.$strict>;
|
|
177
|
+
}, z.core.$strict>>;
|
|
178
|
+
}, z.core.$strict>;
|
|
179
|
+
export declare const workflowAdvanceResultSchema: z.ZodObject<{
|
|
180
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
181
|
+
action: z.ZodEnum<{
|
|
182
|
+
SUBMIT_REVIEW: "SUBMIT_REVIEW";
|
|
183
|
+
FINALIZE_REVIEW: "FINALIZE_REVIEW";
|
|
184
|
+
PREPARE_SOURCE: "PREPARE_SOURCE";
|
|
185
|
+
REGISTER: "REGISTER";
|
|
186
|
+
}>;
|
|
187
|
+
previousRef: z.ZodString;
|
|
188
|
+
inserted: z.ZodBoolean;
|
|
189
|
+
plan: z.ZodObject<{
|
|
190
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
191
|
+
projectRef: z.ZodString;
|
|
192
|
+
ref: z.ZodString;
|
|
193
|
+
contentHash: z.ZodString;
|
|
194
|
+
kind: z.ZodString;
|
|
195
|
+
version: z.ZodNullable<z.ZodNumber>;
|
|
196
|
+
status: z.ZodUnion<[z.ZodEnum<{
|
|
197
|
+
GENERATED: "GENERATED";
|
|
198
|
+
DRAFT: "DRAFT";
|
|
199
|
+
READY_FOR_REVIEW: "READY_FOR_REVIEW";
|
|
200
|
+
REWORK_REQUIRED: "REWORK_REQUIRED";
|
|
201
|
+
APPROVED: "APPROVED";
|
|
202
|
+
REJECTED: "REJECTED";
|
|
203
|
+
SUPERSEDED: "SUPERSEDED";
|
|
204
|
+
}>, z.ZodEnum<{
|
|
205
|
+
RAW_MATERIAL: "RAW_MATERIAL";
|
|
206
|
+
RAW_EVIDENCE: "RAW_EVIDENCE";
|
|
207
|
+
}>]>;
|
|
208
|
+
productionPhase: z.ZodEnum<{
|
|
209
|
+
REGISTERED: "REGISTERED";
|
|
210
|
+
PERSISTED: "PERSISTED";
|
|
211
|
+
CATALOG_PROJECTED: "CATALOG_PROJECTED";
|
|
212
|
+
}>;
|
|
213
|
+
rawMaterialAvailable: z.ZodNullable<z.ZodBoolean>;
|
|
214
|
+
readiness: z.ZodNullable<z.ZodObject<{
|
|
215
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
216
|
+
profile: z.ZodEnum<{
|
|
217
|
+
HUMAN_ARTICLE_V1: "HUMAN_ARTICLE_V1";
|
|
218
|
+
KNOWLEDGE_CARD_V1: "KNOWLEDGE_CARD_V1";
|
|
219
|
+
}>;
|
|
220
|
+
ready: z.ZodBoolean;
|
|
221
|
+
reasons: z.ZodArray<z.ZodEnum<{
|
|
222
|
+
ROLE_MISMATCH: "ROLE_MISMATCH";
|
|
223
|
+
TITLE_REQUIRED: "TITLE_REQUIRED";
|
|
224
|
+
SUMMARY_REQUIRED: "SUMMARY_REQUIRED";
|
|
225
|
+
TEXT_TOO_SHORT: "TEXT_TOO_SHORT";
|
|
226
|
+
STRUCTURE_TOO_THIN: "STRUCTURE_TOO_THIN";
|
|
227
|
+
SOURCE_EVIDENCE_REQUIRED: "SOURCE_EVIDENCE_REQUIRED";
|
|
228
|
+
CITATION_COVERAGE_REQUIRED: "CITATION_COVERAGE_REQUIRED";
|
|
229
|
+
EVIDENCE_MISMATCH: "EVIDENCE_MISMATCH";
|
|
230
|
+
MEDIA_UNAVAILABLE: "MEDIA_UNAVAILABLE";
|
|
231
|
+
}>>;
|
|
232
|
+
metrics: z.ZodObject<{
|
|
233
|
+
textCharacters: z.ZodNumber;
|
|
234
|
+
blockCount: z.ZodNumber;
|
|
235
|
+
textBlockCount: z.ZodNumber;
|
|
236
|
+
mediaBlockCount: z.ZodNumber;
|
|
237
|
+
sourceEvidenceCount: z.ZodNumber;
|
|
238
|
+
citationCount: z.ZodNumber;
|
|
239
|
+
citedBlockCount: z.ZodNumber;
|
|
240
|
+
}, z.core.$strict>;
|
|
241
|
+
}, z.core.$strict>>;
|
|
242
|
+
reviewRef: z.ZodNullable<z.ZodString>;
|
|
243
|
+
reviewDecision: z.ZodNullable<z.ZodEnum<{
|
|
244
|
+
PASS: "PASS";
|
|
245
|
+
REWORK: "REWORK";
|
|
246
|
+
REJECT: "REJECT";
|
|
247
|
+
}>>;
|
|
248
|
+
support: z.ZodNullable<z.ZodObject<{
|
|
249
|
+
action: z.ZodEnum<{
|
|
250
|
+
ALLOW: "ALLOW";
|
|
251
|
+
REVIEW_REQUIRED: "REVIEW_REQUIRED";
|
|
252
|
+
DENY: "DENY";
|
|
253
|
+
}>;
|
|
254
|
+
reasonCodes: z.ZodArray<z.ZodString>;
|
|
255
|
+
missingEvidenceRefs: z.ZodArray<z.ZodString>;
|
|
256
|
+
}, z.core.$strict>>;
|
|
257
|
+
governedPolicyReady: z.ZodBoolean;
|
|
258
|
+
consumerReadDecision: z.ZodNullable<z.ZodObject<{
|
|
259
|
+
action: z.ZodEnum<{
|
|
260
|
+
ALLOW: "ALLOW";
|
|
261
|
+
REVIEW_REQUIRED: "REVIEW_REQUIRED";
|
|
262
|
+
DENY: "DENY";
|
|
263
|
+
}>;
|
|
264
|
+
reasonCodes: z.ZodArray<z.ZodString>;
|
|
265
|
+
authority: z.ZodEnum<{
|
|
266
|
+
AUTHENTICATED_READER: "AUTHENTICATED_READER";
|
|
267
|
+
LOCAL_PROFILE_SIMULATION: "LOCAL_PROFILE_SIMULATION";
|
|
268
|
+
}>;
|
|
269
|
+
}, z.core.$strict>>;
|
|
270
|
+
externalReady: z.ZodBoolean;
|
|
271
|
+
successorRef: z.ZodNullable<z.ZodString>;
|
|
272
|
+
blockers: z.ZodArray<z.ZodString>;
|
|
273
|
+
nextActions: z.ZodArray<z.ZodObject<{
|
|
274
|
+
id: z.ZodString;
|
|
275
|
+
tool: z.ZodNullable<z.ZodString>;
|
|
276
|
+
arguments: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
|
|
277
|
+
requiredScopes: z.ZodArray<z.ZodString>;
|
|
278
|
+
missingScopes: z.ZodArray<z.ZodString>;
|
|
279
|
+
missingFields: z.ZodArray<z.ZodString>;
|
|
280
|
+
canExecute: z.ZodBoolean;
|
|
281
|
+
automatic: z.ZodBoolean;
|
|
282
|
+
reasonCode: z.ZodString;
|
|
283
|
+
cli: z.ZodObject<{
|
|
284
|
+
command: z.ZodString;
|
|
285
|
+
flags: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
|
|
286
|
+
}, z.core.$strict>;
|
|
287
|
+
http: z.ZodObject<{
|
|
288
|
+
method: z.ZodLiteral<"POST">;
|
|
289
|
+
path: z.ZodLiteral<"/mcp/management">;
|
|
290
|
+
tool: z.ZodNullable<z.ZodString>;
|
|
291
|
+
}, z.core.$strict>;
|
|
292
|
+
}, z.core.$strict>>;
|
|
293
|
+
}, z.core.$strict>;
|
|
294
|
+
}, z.core.$strict>;
|
|
295
|
+
export declare const workflowErrorSchema: z.ZodObject<{
|
|
296
|
+
errorCode: z.ZodString;
|
|
297
|
+
completedPhase: z.ZodOptional<z.ZodEnum<{
|
|
298
|
+
REGISTERED: "REGISTERED";
|
|
299
|
+
VALIDATED: "VALIDATED";
|
|
300
|
+
PERSISTED: "PERSISTED";
|
|
301
|
+
CATALOG_PROJECTED: "CATALOG_PROJECTED";
|
|
302
|
+
}>>;
|
|
303
|
+
ref: z.ZodOptional<z.ZodString>;
|
|
304
|
+
}, z.core.$strict>;
|
|
305
|
+
export declare const workflowToolInputSchemas: {
|
|
306
|
+
readonly knowledge_workflow_guide: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
|
|
307
|
+
projectRef: z.ZodString;
|
|
308
|
+
}, z.core.$strict>>;
|
|
309
|
+
readonly knowledge_workflow_plan: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
|
|
310
|
+
projectRef: z.ZodString;
|
|
311
|
+
ref: z.ZodString;
|
|
312
|
+
}, z.core.$strict>>;
|
|
313
|
+
readonly knowledge_workflow_advance: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
|
|
314
|
+
projectRef: z.ZodString;
|
|
315
|
+
ref: z.ZodString;
|
|
316
|
+
action: z.ZodEnum<{
|
|
317
|
+
SUBMIT_REVIEW: "SUBMIT_REVIEW";
|
|
318
|
+
FINALIZE_REVIEW: "FINALIZE_REVIEW";
|
|
319
|
+
PREPARE_SOURCE: "PREPARE_SOURCE";
|
|
320
|
+
REGISTER: "REGISTER";
|
|
321
|
+
}>;
|
|
322
|
+
expectedVersion: z.ZodOptional<z.ZodNumber>;
|
|
323
|
+
actedAt: z.ZodOptional<z.ZodISODateTime>;
|
|
324
|
+
}, z.core.$strict>>;
|
|
325
|
+
readonly knowledge_agent_submit: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
|
|
326
|
+
projectRef: z.ZodString;
|
|
327
|
+
sourceId: z.ZodString;
|
|
328
|
+
contentBase64: z.ZodString;
|
|
329
|
+
mediaType: z.ZodString;
|
|
330
|
+
access: z.ZodDefault<z.ZodEnum<{
|
|
331
|
+
PUBLIC: "PUBLIC";
|
|
332
|
+
TENANT: "TENANT";
|
|
333
|
+
INTERNAL: "INTERNAL";
|
|
334
|
+
FDE_INTERNAL: "FDE_INTERNAL";
|
|
335
|
+
}>>;
|
|
336
|
+
submittedAt: z.ZodOptional<z.ZodISODateTime>;
|
|
337
|
+
freshnessSeconds: z.ZodOptional<z.ZodNumber>;
|
|
338
|
+
}, z.core.$strict>>;
|
|
339
|
+
};
|
|
340
|
+
export declare const workflowToolScopes: {
|
|
341
|
+
readonly knowledge_workflow_guide: "knowledge.workflow.read";
|
|
342
|
+
readonly knowledge_workflow_plan: "knowledge.workflow.read";
|
|
343
|
+
readonly knowledge_workflow_advance: "knowledge.workflow.read";
|
|
344
|
+
readonly knowledge_agent_submit: "knowledge.material.write";
|
|
345
|
+
};
|
|
346
|
+
export declare const workflowActionScopes: {
|
|
347
|
+
readonly PREPARE_SOURCE: "knowledge.compose";
|
|
348
|
+
readonly SUBMIT_REVIEW: "knowledge.compose";
|
|
349
|
+
readonly FINALIZE_REVIEW: "knowledge.approve";
|
|
350
|
+
readonly REGISTER: "knowledge.material.write";
|
|
351
|
+
};
|
|
352
|
+
export type WorkflowPlan = z.infer<typeof workflowPlanSchema>;
|
|
353
|
+
export type WorkflowNextAction = z.infer<typeof workflowNextActionSchema>;
|
|
354
|
+
export type WorkflowAction = z.infer<typeof workflowActionSchema>;
|
|
355
|
+
export type WorkflowReadDecision = z.infer<typeof readDecision>;
|
|
356
|
+
/** 网络成功和失败共享可发现 schema,阶段包含已经完成注册后的尾部失败。 */
|
|
357
|
+
export declare const agentSubmitResultSchema: z.ZodObject<{
|
|
358
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
359
|
+
production: z.ZodObject<{
|
|
360
|
+
phase: z.ZodEnum<{
|
|
361
|
+
REGISTERED: "REGISTERED";
|
|
362
|
+
CATALOG_PROJECTED: "CATALOG_PROJECTED";
|
|
363
|
+
}>;
|
|
364
|
+
ref: z.ZodString;
|
|
365
|
+
registered: z.ZodBoolean;
|
|
366
|
+
identity: z.ZodEnum<{
|
|
367
|
+
NOT_CONFIGURED: "NOT_CONFIGURED";
|
|
368
|
+
CONFIGURED: "CONFIGURED";
|
|
369
|
+
}>;
|
|
370
|
+
}, z.core.$strict>;
|
|
371
|
+
presentation: z.ZodNullable<z.ZodObject<{
|
|
372
|
+
documentRef: z.ZodString;
|
|
373
|
+
inserted: z.ZodBoolean;
|
|
374
|
+
contentHash: z.ZodString;
|
|
375
|
+
}, z.core.$strict>>;
|
|
376
|
+
evidenceRef: z.ZodString;
|
|
377
|
+
projectRef: z.ZodString;
|
|
378
|
+
contentHash: z.ZodString;
|
|
379
|
+
byteLength: z.ZodNumber;
|
|
380
|
+
inserted: z.ZodBoolean;
|
|
381
|
+
lifecycle: z.ZodLiteral<"QUEUED">;
|
|
382
|
+
contentClass: z.ZodLiteral<"RAW_EVIDENCE">;
|
|
383
|
+
nextStep: z.ZodObject<{
|
|
384
|
+
tool: z.ZodLiteral<"knowledge_workflow_plan">;
|
|
385
|
+
arguments: z.ZodObject<{
|
|
386
|
+
projectRef: z.ZodString;
|
|
387
|
+
ref: z.ZodString;
|
|
388
|
+
}, z.core.$strict>;
|
|
389
|
+
}, z.core.$strict>;
|
|
390
|
+
}, z.core.$strict>;
|
|
391
|
+
export declare const workflowToolOutputSchemas: {
|
|
392
|
+
readonly knowledge_workflow_guide: {
|
|
393
|
+
type: string;
|
|
394
|
+
oneOf: z.core.ZodStandardJSONSchemaPayload<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>[];
|
|
395
|
+
};
|
|
396
|
+
readonly knowledge_workflow_plan: {
|
|
397
|
+
type: string;
|
|
398
|
+
oneOf: z.core.ZodStandardJSONSchemaPayload<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>[];
|
|
399
|
+
};
|
|
400
|
+
readonly knowledge_workflow_advance: {
|
|
401
|
+
type: string;
|
|
402
|
+
oneOf: z.core.ZodStandardJSONSchemaPayload<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>[];
|
|
403
|
+
};
|
|
404
|
+
readonly knowledge_agent_submit: {
|
|
405
|
+
type: string;
|
|
406
|
+
oneOf: z.core.ZodStandardJSONSchemaPayload<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>[];
|
|
407
|
+
};
|
|
408
|
+
};
|
|
409
|
+
/** 同一份模型与参数 schema 供 CLI、MCP guide 和文档示例使用;不给 review 默认 PASS。 */
|
|
410
|
+
export declare function workflowGuide(): {
|
|
411
|
+
schemaVersion: number;
|
|
412
|
+
model: {
|
|
413
|
+
raw: string;
|
|
414
|
+
reviewed: string;
|
|
415
|
+
lifecycle: string[];
|
|
416
|
+
publication: string[];
|
|
417
|
+
};
|
|
418
|
+
rules: string[];
|
|
419
|
+
tools: Record<string, {
|
|
420
|
+
requiredScope: string;
|
|
421
|
+
inputSchema: unknown;
|
|
422
|
+
}>;
|
|
423
|
+
advanceScopes: {
|
|
424
|
+
readonly PREPARE_SOURCE: "knowledge.compose";
|
|
425
|
+
readonly SUBMIT_REVIEW: "knowledge.compose";
|
|
426
|
+
readonly FINALIZE_REVIEW: "knowledge.approve";
|
|
427
|
+
readonly REGISTER: "knowledge.material.write";
|
|
428
|
+
};
|
|
429
|
+
https: {
|
|
430
|
+
method: string;
|
|
431
|
+
path: string;
|
|
432
|
+
body: {
|
|
433
|
+
tool: string;
|
|
434
|
+
arguments: string;
|
|
435
|
+
};
|
|
436
|
+
authorization: string;
|
|
437
|
+
};
|
|
438
|
+
};
|
|
439
|
+
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/** Agent 的治理合同描述真实状态和下一步,不把写入权限解释为审核或正文权限。 */
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { artifactStatusSchema, idSchema, isoDateTimeSchema, publicationReadinessReportSchema, sha256Schema, stableUriSchema } from '../contracts/index.js';
|
|
4
|
+
import { consumerProjectRefSchema } from './consumer.js';
|
|
5
|
+
import { managementToolInputSchemas } from './management.js';
|
|
6
|
+
const project = z.object({ projectRef: consumerProjectRefSchema }).strict();
|
|
7
|
+
export const workflowPlanInputSchema = project.extend({ ref: stableUriSchema }).strict();
|
|
8
|
+
export const workflowGuideInputSchema = project;
|
|
9
|
+
export const workflowActionSchema = z.enum(['PREPARE_SOURCE', 'SUBMIT_REVIEW', 'FINALIZE_REVIEW', 'REGISTER']);
|
|
10
|
+
export const workflowAdvanceInputSchema = workflowPlanInputSchema.extend({ action: workflowActionSchema, expectedVersion: z.number().int().nonnegative().optional(), actedAt: isoDateTimeSchema.optional() }).strict().superRefine((value, ctx) => {
|
|
11
|
+
if (['SUBMIT_REVIEW', 'FINALIZE_REVIEW'].includes(value.action) && (!value.expectedVersion || !value.actedAt))
|
|
12
|
+
ctx.addIssue({ code: 'custom', message: 'transition requires exact expectedVersion and actedAt' });
|
|
13
|
+
});
|
|
14
|
+
export const agentSubmitInputSchema = project.extend({ sourceId: idSchema, contentBase64: z.string().min(1).max(87384), mediaType: z.string().trim().min(1).max(256), access: z.enum(['PUBLIC', 'TENANT', 'INTERNAL', 'FDE_INTERNAL']).default('TENANT'), submittedAt: isoDateTimeSchema.optional(), freshnessSeconds: z.number().int().min(60).max(86400).optional() }).strict();
|
|
15
|
+
const argumentsSchema = z.record(z.string(), z.json());
|
|
16
|
+
export const workflowNextActionSchema = z.object({ id: z.string(), tool: z.string().nullable(), arguments: argumentsSchema, requiredScopes: z.array(z.string()), missingScopes: z.array(z.string()), missingFields: z.array(z.string()), canExecute: z.boolean(), automatic: z.boolean(), reasonCode: z.string(), cli: z.object({ command: z.string(), flags: argumentsSchema }).strict(), http: z.object({ method: z.literal('POST'), path: z.literal('/mcp/management'), tool: z.string().nullable() }).strict() }).strict();
|
|
17
|
+
const readDecision = z.object({ action: z.enum(['ALLOW', 'REVIEW_REQUIRED', 'DENY']), reasonCodes: z.array(z.string()), authority: z.enum(['AUTHENTICATED_READER', 'LOCAL_PROFILE_SIMULATION']) }).strict();
|
|
18
|
+
export const workflowPlanSchema = z.object({ schemaVersion: z.literal(1), projectRef: consumerProjectRefSchema, ref: stableUriSchema, contentHash: sha256Schema, kind: z.string(), version: z.number().int().positive().nullable(), status: artifactStatusSchema.or(z.enum(['RAW_EVIDENCE', 'RAW_MATERIAL'])), productionPhase: z.enum(['PERSISTED', 'CATALOG_PROJECTED', 'REGISTERED']), rawMaterialAvailable: z.boolean().nullable(), readiness: publicationReadinessReportSchema.nullable(), reviewRef: stableUriSchema.nullable(), reviewDecision: z.enum(['PASS', 'REWORK', 'REJECT']).nullable(), support: z.object({ action: z.enum(['ALLOW', 'REVIEW_REQUIRED', 'DENY']), reasonCodes: z.array(z.string()), missingEvidenceRefs: z.array(stableUriSchema) }).strict().nullable(), governedPolicyReady: z.boolean(), consumerReadDecision: readDecision.nullable(), externalReady: z.boolean(), successorRef: stableUriSchema.nullable(), blockers: z.array(z.string()), nextActions: z.array(workflowNextActionSchema).max(70) }).strict();
|
|
19
|
+
export const workflowAdvanceResultSchema = z.object({ schemaVersion: z.literal(1), action: workflowActionSchema, previousRef: stableUriSchema, inserted: z.boolean(), plan: workflowPlanSchema }).strict();
|
|
20
|
+
export const workflowErrorSchema = z.object({ errorCode: z.string(), completedPhase: z.enum(['VALIDATED', 'PERSISTED', 'CATALOG_PROJECTED', 'REGISTERED']).optional(), ref: stableUriSchema.optional() }).strict();
|
|
21
|
+
export const workflowToolInputSchemas = { knowledge_workflow_guide: z.toJSONSchema(workflowGuideInputSchema, { target: 'draft-07' }), knowledge_workflow_plan: z.toJSONSchema(workflowPlanInputSchema, { target: 'draft-07' }), knowledge_workflow_advance: z.toJSONSchema(workflowAdvanceInputSchema, { target: 'draft-07' }), knowledge_agent_submit: z.toJSONSchema(agentSubmitInputSchema, { target: 'draft-07' }) };
|
|
22
|
+
export const workflowToolScopes = { knowledge_workflow_guide: 'knowledge.workflow.read', knowledge_workflow_plan: 'knowledge.workflow.read', knowledge_workflow_advance: 'knowledge.workflow.read', knowledge_agent_submit: 'knowledge.material.write' };
|
|
23
|
+
export const workflowActionScopes = { PREPARE_SOURCE: 'knowledge.compose', SUBMIT_REVIEW: 'knowledge.compose', FINALIZE_REVIEW: 'knowledge.approve', REGISTER: 'knowledge.material.write' };
|
|
24
|
+
/** 网络成功和失败共享可发现 schema,阶段包含已经完成注册后的尾部失败。 */
|
|
25
|
+
export const agentSubmitResultSchema = z.object({ schemaVersion: z.literal(1), production: z.object({ phase: z.enum(['CATALOG_PROJECTED', 'REGISTERED']), ref: stableUriSchema, registered: z.boolean(), identity: z.enum(['CONFIGURED', 'NOT_CONFIGURED']) }).strict(), presentation: z.object({ documentRef: stableUriSchema, inserted: z.boolean(), contentHash: sha256Schema }).strict().nullable(), evidenceRef: stableUriSchema, projectRef: consumerProjectRefSchema, contentHash: sha256Schema, byteLength: z.number().int().min(1).max(65536), inserted: z.boolean(), lifecycle: z.literal('QUEUED'), contentClass: z.literal('RAW_EVIDENCE'), nextStep: z.object({ tool: z.literal('knowledge_workflow_plan'), arguments: workflowPlanInputSchema }).strict() }).strict();
|
|
26
|
+
const guideSchema = z.object({ schemaVersion: z.literal(1), model: z.record(z.string(), z.json()), rules: z.array(z.string()), tools: z.record(z.string(), z.object({ requiredScope: z.string(), inputSchema: z.json() }).strict()), advanceScopes: z.record(z.string(), z.string()), https: z.json() }).strict();
|
|
27
|
+
const output = (success) => ({ type: 'object', oneOf: [z.toJSONSchema(success, { target: 'draft-07' }), z.toJSONSchema(workflowErrorSchema, { target: 'draft-07' })] });
|
|
28
|
+
export const workflowToolOutputSchemas = { knowledge_workflow_guide: output(guideSchema), knowledge_workflow_plan: output(workflowPlanSchema), knowledge_workflow_advance: output(workflowAdvanceResultSchema), knowledge_agent_submit: output(agentSubmitResultSchema) };
|
|
29
|
+
/** 同一份模型与参数 schema 供 CLI、MCP guide 和文档示例使用;不给 review 默认 PASS。 */
|
|
30
|
+
export function workflowGuide() {
|
|
31
|
+
const tools = {};
|
|
32
|
+
for (const [name, schema] of Object.entries(workflowToolInputSchemas))
|
|
33
|
+
tools[name] = { requiredScope: workflowToolScopes[name], inputSchema: schema };
|
|
34
|
+
for (const [name, schema] of Object.entries(managementToolInputSchemas))
|
|
35
|
+
tools[name] = { requiredScope: name === 'knowledge_review' ? 'knowledge.review' : name === 'knowledge_finalize_review' ? 'knowledge.approve' : 'knowledge.compose', inputSchema: schema };
|
|
36
|
+
return { schemaVersion: 1, model: { raw: 'Evidence / Material 保留原字节和 provenance;原文可读不等于结论已审核。', reviewed: 'KNOWLEDGE / INSIGHT', lifecycle: ['DRAFT', 'READY_FOR_REVIEW', 'REVIEW(PASS|REWORK|REJECT)', 'APPROVED|REWORK_REQUIRED|REJECTED'], publication: ['PERSISTED', 'CATALOG_PROJECTED', 'REGISTERED', 'consumer read ALLOW'] }, rules: ['先调用 knowledge_workflow_plan,再执行 canExecute 动作;缺字段由 Agent 补齐并重新计划。', '读取原文、核对引用和适用范围后,获授权 reviewer 显式写 PASS / REWORK / REJECT;不根据写入成功推断 PASS。', 'RESEARCH 先正式合成为 KNOWLEDGE / INSIGHT;Claim Currentness proposal 使用专门审核链。', 'freshnessSeconds 仅为作者在系统内首次保存的精确快照时效,不证明外部网页已复核;同身份重放不延长时效。', 'externalReady 需要注册、治理门通过及当前已鉴权消费者实际 read ALLOW;CLI profile 是模拟。', 'Plan 不提供正文或 Review summary;审核时使用独立 read scope 读取 exact ref。'], tools, advanceScopes: workflowActionScopes, https: { method: 'POST', path: '/mcp/management', body: { tool: 'tool name', arguments: '对应 inputSchema' }, authorization: 'OAuth Bearer + client/project binding;API key 不授予管理权限' } };
|
|
37
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface MaterialStreamOptions {
|
|
2
|
+
range?: string;
|
|
3
|
+
head?: boolean;
|
|
4
|
+
signal?: AbortSignal;
|
|
5
|
+
expectedContentHash?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface MaterialStreamResponse {
|
|
8
|
+
status: 200 | 206;
|
|
9
|
+
contentClass: string;
|
|
10
|
+
contentHash: string;
|
|
11
|
+
mediaType: string;
|
|
12
|
+
contentLength: number;
|
|
13
|
+
contentRange: string | null;
|
|
14
|
+
body: ReadableStream<Uint8Array> | null;
|
|
15
|
+
verification: 'SERVER_VERIFIED_BEFORE_HEADERS';
|
|
16
|
+
}
|
|
17
|
+
/** Streaming does not buffer large payloads; the whole-object hash is not a hash of a Range segment. */
|
|
18
|
+
export declare function materialStream(fetchImpl: typeof fetch, url: URL, token: string, options: MaterialStreamOptions): Promise<MaterialStreamResponse>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** Streaming does not buffer large payloads; the whole-object hash is not a hash of a Range segment. */
|
|
2
|
+
export async function materialStream(fetchImpl, url, token, options) {
|
|
3
|
+
const requested = options.range ? /^bytes=(\d*)-(\d*)$/.exec(options.range) : null;
|
|
4
|
+
if (options.range && (!requested || !requested[1] && !requested[2] || requested.slice(1).some(part => part !== '' && !Number.isSafeInteger(Number(part))) || !requested[1] && Number(requested[2]) === 0))
|
|
5
|
+
throw new Error('MATERIAL_STREAM_RANGE_INVALID');
|
|
6
|
+
const response = await fetchImpl(url, { method: options.head ? 'HEAD' : 'GET', headers: { authorization: `Bearer ${token}`, accept: 'application/octet-stream', ...(options.range ? { range: options.range } : {}) }, redirect: 'error', ...(options.signal ? { signal: options.signal } : {}) });
|
|
7
|
+
const fail = async (code) => { await response.body?.cancel(); throw new Error(code); };
|
|
8
|
+
if (response.status !== 200 && response.status !== 206)
|
|
9
|
+
return fail(`MATERIAL_STREAM_HTTP_${response.status}`);
|
|
10
|
+
const contentClass = response.headers.get('x-knowledge-content-class');
|
|
11
|
+
if (!contentClass || !['ARTIFACT_SNAPSHOT', 'RAW_EVIDENCE', 'RAW_EVIDENCE_MEDIA', 'REFERENCE_SNAPSHOT', 'REGISTERED_MATERIAL'].includes(contentClass))
|
|
12
|
+
return fail('MATERIAL_STREAM_CLASS_INVALID');
|
|
13
|
+
const hash = response.headers.get('x-knowledge-content-hash'), type = response.headers.get('content-type'), rawLength = response.headers.get('content-length'), contentRange = response.headers.get('content-range');
|
|
14
|
+
if (response.headers.get('x-knowledge-serving-action') !== 'ALLOW' || !hash || !/^sha256:[a-f0-9]{64}$/.test(hash) || !type || rawLength === null || !/^\d+$/.test(rawLength) || !Number.isSafeInteger(Number(rawLength)))
|
|
15
|
+
return fail('MATERIAL_STREAM_DESCRIPTOR_INVALID');
|
|
16
|
+
if (options.expectedContentHash && hash !== options.expectedContentHash)
|
|
17
|
+
return fail('MATERIAL_STREAM_IDENTITY_MISMATCH');
|
|
18
|
+
if (response.status === 206) {
|
|
19
|
+
const parts = /^bytes (\d+)-(\d+)\/(\d+)$/.exec(contentRange ?? '');
|
|
20
|
+
if (!requested || !parts || parts.slice(1).some(part => !Number.isSafeInteger(Number(part))) || Number(parts[1]) > Number(parts[2]) || Number(parts[2]) - Number(parts[1]) + 1 !== Number(rawLength) || Number(parts[2]) >= Number(parts[3]))
|
|
21
|
+
return fail('MATERIAL_STREAM_RANGE_RESPONSE_INVALID');
|
|
22
|
+
const total = Number(parts[3]), start = requested[1] ? Number(requested[1]) : Math.max(0, total - Number(requested[2])), end = requested[1] && requested[2] ? Math.min(total - 1, Number(requested[2])) : total - 1;
|
|
23
|
+
if (start !== Number(parts[1]) || end !== Number(parts[2]))
|
|
24
|
+
return fail('MATERIAL_STREAM_RANGE_RESPONSE_INVALID');
|
|
25
|
+
}
|
|
26
|
+
if (!options.head && !response.body && Number(rawLength) > 0)
|
|
27
|
+
return fail('MATERIAL_STREAM_BODY_MISSING');
|
|
28
|
+
return { status: response.status, contentClass, contentHash: hash, mediaType: type, contentLength: Number(rawLength), contentRange, body: response.body, verification: 'SERVER_VERIFIED_BEFORE_HEADERS' };
|
|
29
|
+
}
|