@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.
Files changed (203) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +29 -0
  3. package/README.md +34 -2
  4. package/dist/agent-entry.d.ts +291 -0
  5. package/dist/agent-entry.js +153 -0
  6. package/dist/agent-guidance-error.d.ts +15 -0
  7. package/dist/agent-guidance-error.js +46 -0
  8. package/dist/auth.d.ts +124 -0
  9. package/dist/auth.js +165 -0
  10. package/dist/index.d.ts +290 -0
  11. package/dist/index.js +166 -0
  12. package/dist/internal/contracts/artifact.d.ts +120 -0
  13. package/dist/internal/contracts/artifact.js +103 -0
  14. package/dist/internal/contracts/collection-control.d.ts +160 -0
  15. package/dist/internal/contracts/collection-control.js +69 -0
  16. package/dist/internal/contracts/collection.d.ts +263 -0
  17. package/dist/internal/contracts/collection.js +174 -0
  18. package/dist/internal/contracts/common.d.ts +17 -0
  19. package/dist/internal/contracts/common.js +16 -0
  20. package/dist/internal/contracts/currentness.d.ts +477 -0
  21. package/dist/internal/contracts/currentness.js +221 -0
  22. package/dist/internal/contracts/event.d.ts +60 -0
  23. package/dist/internal/contracts/event.js +35 -0
  24. package/dist/internal/contracts/evidence.d.ts +202 -0
  25. package/dist/internal/contracts/evidence.js +171 -0
  26. package/dist/internal/contracts/index.d.ts +54 -0
  27. package/dist/internal/contracts/index.js +54 -0
  28. package/dist/internal/contracts/material-capability.d.ts +88 -0
  29. package/dist/internal/contracts/material-capability.js +8 -0
  30. package/dist/internal/contracts/material-carrier.d.ts +104 -0
  31. package/dist/internal/contracts/material-carrier.js +15 -0
  32. package/dist/internal/contracts/material-context.d.ts +28 -0
  33. package/dist/internal/contracts/material-context.js +9 -0
  34. package/dist/internal/contracts/material-read.d.ts +152 -0
  35. package/dist/internal/contracts/material-read.js +12 -0
  36. package/dist/internal/contracts/observation.d.ts +75 -0
  37. package/dist/internal/contracts/observation.js +39 -0
  38. package/dist/internal/contracts/persistence.d.ts +370 -0
  39. package/dist/internal/contracts/persistence.js +239 -0
  40. package/dist/internal/contracts/project-intent.d.ts +218 -0
  41. package/dist/internal/contracts/project-intent.js +121 -0
  42. package/dist/internal/contracts/projection.d.ts +380 -0
  43. package/dist/internal/contracts/projection.js +194 -0
  44. package/dist/internal/contracts/public-reference.d.ts +237 -0
  45. package/dist/internal/contracts/public-reference.js +87 -0
  46. package/dist/internal/contracts/reference-record.d.ts +124 -0
  47. package/dist/internal/contracts/reference-record.js +55 -0
  48. package/dist/internal/contracts/remote-file.d.ts +128 -0
  49. package/dist/internal/contracts/remote-file.js +159 -0
  50. package/dist/internal/contracts/resource-scope.d.ts +40 -0
  51. package/dist/internal/contracts/resource-scope.js +38 -0
  52. package/dist/internal/contracts/review-packet.d.ts +274 -0
  53. package/dist/internal/contracts/review-packet.js +61 -0
  54. package/dist/internal/contracts/review-plane.d.ts +90 -0
  55. package/dist/internal/contracts/review-plane.js +89 -0
  56. package/dist/internal/contracts/rich-document.d.ts +641 -0
  57. package/dist/internal/contracts/rich-document.js +184 -0
  58. package/dist/internal/contracts/runtime-compatibility.d.ts +22 -0
  59. package/dist/internal/contracts/runtime-compatibility.js +55 -0
  60. package/dist/internal/contracts/runtime.d.ts +59 -0
  61. package/dist/internal/contracts/runtime.js +68 -0
  62. package/dist/internal/contracts/scheduler.d.ts +348 -0
  63. package/dist/internal/contracts/scheduler.js +256 -0
  64. package/dist/internal/contracts/signal.d.ts +113 -0
  65. package/dist/internal/contracts/signal.js +77 -0
  66. package/dist/internal/contracts/source-governance.d.ts +375 -0
  67. package/dist/internal/contracts/source-governance.js +194 -0
  68. package/dist/internal/contracts/source.d.ts +62 -0
  69. package/dist/internal/contracts/source.js +32 -0
  70. package/dist/internal/contracts/tenant-budget.d.ts +59 -0
  71. package/dist/internal/contracts/tenant-budget.js +34 -0
  72. package/dist/internal/contracts/tenant-collection-request.d.ts +209 -0
  73. package/dist/internal/contracts/tenant-collection-request.js +58 -0
  74. package/dist/internal/contracts/tenant-collection.d.ts +199 -0
  75. package/dist/internal/contracts/tenant-collection.js +66 -0
  76. package/dist/internal/contracts/tenant-currentness.d.ts +117 -0
  77. package/dist/internal/contracts/tenant-currentness.js +26 -0
  78. package/dist/internal/contracts/tenant-management.d.ts +286 -0
  79. package/dist/internal/contracts/tenant-management.js +27 -0
  80. package/dist/internal/contracts/tenant-material-api.d.ts +584 -0
  81. package/dist/internal/contracts/tenant-material-api.js +46 -0
  82. package/dist/internal/contracts/tenant-material-json-schema.js +16 -0
  83. package/dist/internal/contracts/tenant-pdf-text.d.ts +27 -0
  84. package/dist/internal/contracts/tenant-pdf-text.js +13 -0
  85. package/dist/internal/contracts/tenant-project-control.d.ts +94 -0
  86. package/dist/internal/contracts/tenant-project-control.js +19 -0
  87. package/dist/internal/contracts/tenant-public-reference.d.ts +179 -0
  88. package/dist/internal/contracts/tenant-public-reference.js +26 -0
  89. package/dist/internal/contracts/tenant-resource-api.d.ts +738 -0
  90. package/dist/internal/contracts/tenant-resource-api.js +70 -0
  91. package/dist/internal/contracts/tenant-resource.d.ts +298 -0
  92. package/dist/internal/contracts/tenant-resource.js +118 -0
  93. package/dist/internal/contracts/tenant-rich-document.d.ts +317 -0
  94. package/dist/internal/contracts/tenant-rich-document.js +17 -0
  95. package/dist/internal/contracts/tenant-source-binding.d.ts +44 -0
  96. package/dist/internal/contracts/tenant-source-binding.js +33 -0
  97. package/dist/internal/contracts/tenant-source-bridge.d.ts +70 -0
  98. package/dist/internal/contracts/tenant-source-bridge.js +9 -0
  99. package/dist/internal/contracts/tenant-source-cutover.d.ts +226 -0
  100. package/dist/internal/contracts/tenant-source-cutover.js +26 -0
  101. package/dist/internal/contracts/tenant-source-document.d.ts +163 -0
  102. package/dist/internal/contracts/tenant-source-document.js +38 -0
  103. package/dist/internal/contracts/tenant-source-lease.d.ts +1 -0
  104. package/dist/internal/contracts/tenant-source-lease.js +5 -0
  105. package/dist/internal/contracts/tenant-source.d.ts +223 -0
  106. package/dist/internal/contracts/tenant-source.js +83 -0
  107. package/dist/internal/contracts/tenant-web-collection.d.ts +287 -0
  108. package/dist/internal/contracts/tenant-web-collection.js +118 -0
  109. package/dist/internal/contracts/tenant-web-content-plan.d.ts +86 -0
  110. package/dist/internal/contracts/tenant-web-content-plan.js +39 -0
  111. package/dist/internal/contracts/tenant-web-content-result.d.ts +63 -0
  112. package/dist/internal/contracts/tenant-web-content-result.js +15 -0
  113. package/dist/internal/contracts/tenant-web-content.d.ts +383 -0
  114. package/dist/internal/contracts/tenant-web-content.js +16 -0
  115. package/dist/internal/contracts/tenant-web-crawl.d.ts +310 -0
  116. package/dist/internal/contracts/tenant-web-crawl.js +55 -0
  117. package/dist/internal/contracts/tenant-web-dynamic.d.ts +698 -0
  118. package/dist/internal/contracts/tenant-web-dynamic.js +68 -0
  119. package/dist/internal/contracts/tenant-web-results.d.ts +66 -0
  120. package/dist/internal/contracts/tenant-web-results.js +41 -0
  121. package/dist/internal/contracts/tenant-web-workflow.d.ts +494 -0
  122. package/dist/internal/contracts/tenant-web-workflow.js +29 -0
  123. package/dist/internal/serving-contracts/agent-catalog.d.ts +70 -0
  124. package/dist/internal/serving-contracts/agent-catalog.js +56 -0
  125. package/dist/internal/serving-contracts/agent-entry.d.ts +13148 -0
  126. package/dist/internal/serving-contracts/agent-entry.js +57 -0
  127. package/dist/internal/serving-contracts/agent-guidance-shapes.d.ts +263 -0
  128. package/dist/internal/serving-contracts/agent-guidance-shapes.js +12 -0
  129. package/dist/internal/serving-contracts/agent-input-hints.d.ts +24 -0
  130. package/dist/internal/serving-contracts/agent-input-hints.js +104 -0
  131. package/dist/internal/serving-contracts/body-search.d.ts +231 -0
  132. package/dist/internal/serving-contracts/body-search.js +16 -0
  133. package/dist/internal/serving-contracts/consumer.d.ts +989 -0
  134. package/dist/internal/serving-contracts/consumer.js +45 -0
  135. package/dist/internal/serving-contracts/core.d.ts +333 -0
  136. package/dist/internal/serving-contracts/core.js +76 -0
  137. package/dist/internal/serving-contracts/http.d.ts +2874 -0
  138. package/dist/internal/serving-contracts/http.js +64 -0
  139. package/dist/internal/serving-contracts/index.d.ts +24 -0
  140. package/dist/internal/serving-contracts/index.js +25 -0
  141. package/dist/internal/serving-contracts/management.d.ts +424 -0
  142. package/dist/internal/serving-contracts/management.js +15 -0
  143. package/dist/internal/serving-contracts/material-capabilities.d.ts +508 -0
  144. package/dist/internal/serving-contracts/material-capabilities.js +14 -0
  145. package/dist/internal/serving-contracts/material-index-status.d.ts +55 -0
  146. package/dist/internal/serving-contracts/material-index-status.js +5 -0
  147. package/dist/internal/serving-contracts/mcp.d.ts +2218 -0
  148. package/dist/internal/serving-contracts/mcp.js +140 -0
  149. package/dist/internal/serving-contracts/tenant-governance.d.ts +236 -0
  150. package/dist/internal/serving-contracts/tenant-governance.js +13 -0
  151. package/dist/internal/serving-contracts/tenant-management.d.ts +6276 -0
  152. package/dist/internal/serving-contracts/tenant-management.js +89 -0
  153. package/dist/internal/serving-contracts/tenant-project.d.ts +7550 -0
  154. package/dist/internal/serving-contracts/tenant-project.js +39 -0
  155. package/dist/internal/serving-contracts/tenant-runtime.d.ts +9674 -0
  156. package/dist/internal/serving-contracts/tenant-runtime.js +37 -0
  157. package/dist/internal/serving-contracts/tenant-session.d.ts +87 -0
  158. package/dist/internal/serving-contracts/tenant-session.js +8 -0
  159. package/dist/internal/serving-contracts/tenant-web-content.d.ts +4606 -0
  160. package/dist/internal/serving-contracts/tenant-web-content.js +20 -0
  161. package/dist/internal/serving-contracts/tenant-web-crawl.d.ts +2958 -0
  162. package/dist/internal/serving-contracts/tenant-web-crawl.js +13 -0
  163. package/dist/internal/serving-contracts/tenant-web-dynamic.d.ts +3902 -0
  164. package/dist/internal/serving-contracts/tenant-web-dynamic.js +20 -0
  165. package/dist/internal/serving-contracts/tenant-web-workflow.d.ts +5750 -0
  166. package/dist/internal/serving-contracts/tenant-web-workflow.js +36 -0
  167. package/dist/internal/serving-contracts/tenant-web.d.ts +6418 -0
  168. package/dist/internal/serving-contracts/tenant-web.js +53 -0
  169. package/dist/internal/serving-contracts/tenant-workspace.d.ts +6451 -0
  170. package/dist/internal/serving-contracts/tenant-workspace.js +28 -0
  171. package/dist/internal/serving-contracts/workflow.d.ts +439 -0
  172. package/dist/internal/serving-contracts/workflow.js +37 -0
  173. package/dist/material-stream.d.ts +18 -0
  174. package/dist/material-stream.js +29 -0
  175. package/dist/oauth.d.ts +268 -0
  176. package/dist/oauth.js +539 -0
  177. package/dist/resource.d.ts +88 -0
  178. package/dist/resource.js +123 -0
  179. package/dist/session.d.ts +4 -0
  180. package/dist/session.js +3 -0
  181. package/dist/tenant-client.d.ts +169 -0
  182. package/dist/tenant-client.js +58 -0
  183. package/dist/tenant-management.d.ts +240 -0
  184. package/dist/tenant-management.js +149 -0
  185. package/dist/tenant-project.d.ts +57 -0
  186. package/dist/tenant-project.js +63 -0
  187. package/dist/tenant-runtime.d.ts +174 -0
  188. package/dist/tenant-runtime.js +17 -0
  189. package/dist/tenant-web-content.d.ts +44 -0
  190. package/dist/tenant-web-content.js +70 -0
  191. package/dist/tenant-web-crawl.d.ts +42 -0
  192. package/dist/tenant-web-crawl.js +39 -0
  193. package/dist/tenant-web-dynamic.d.ts +42 -0
  194. package/dist/tenant-web-dynamic.js +39 -0
  195. package/dist/tenant-web-workflow.d.ts +43 -0
  196. package/dist/tenant-web-workflow.js +63 -0
  197. package/dist/tenant-web.d.ts +42 -0
  198. package/dist/tenant-web.js +39 -0
  199. package/dist/tenant-workspace.d.ts +36 -0
  200. package/dist/tenant-workspace.js +21 -0
  201. package/dist/token-provider.d.ts +14 -0
  202. package/dist/token-provider.js +21 -0
  203. package/package.json +45 -3
@@ -0,0 +1,39 @@
1
+ /** 显式 Provider22;继承旧入口但不改变其默认发现版本。 */
2
+ import { tenantWebToolSchemas, tenantWebCrawlEnvelopeSchema, tenantWebCrawlProviderSchema, tenantWebErrorSchema, tenantWebSafeErrorRef } from './internal/serving-contracts/index.js';
3
+ import { tenantWebJobRef } from './internal/contracts/index.js';
4
+ import { KnowledgeTenantRuntimeClient } from './tenant-runtime.js';
5
+ import { TenantManagementSdkError } from './tenant-management.js';
6
+ export class KnowledgeTenantWebCrawlClient extends KnowledgeTenantRuntimeClient {
7
+ protocolVersion() { return 22; }
8
+ failure(raw, status) {
9
+ const value = tenantWebErrorSchema.safeParse(raw);
10
+ if (!value.success)
11
+ return null;
12
+ const ref = tenantWebSafeErrorRef(value.data.ref, this.options.expectedTenantId);
13
+ return new TenantManagementSdkError(value.data.errorCode, status, { ...value.data, ref });
14
+ }
15
+ async webTool(name, raw, options = {}) {
16
+ if (!Object.hasOwn(tenantWebToolSchemas, name))
17
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_OPERATION_UNSUPPORTED', 0);
18
+ const input = tenantWebToolSchemas[name].parse(raw), body = JSON.stringify({ tool: name, arguments: input });
19
+ if (Buffer.byteLength(body) > 131072)
20
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_REQUEST_TOO_LARGE', 0);
21
+ const response = await this.request(this.url('call', 22), { method: 'POST', headers: { 'content-type': 'application/json' }, body, ...(options.signal ? { signal: options.signal } : {}) });
22
+ const result = tenantWebCrawlEnvelopeSchema(name).safeParse(await this.json(response));
23
+ if (!result.success)
24
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_RESPONSE_INVALID', response.status);
25
+ if (result.data.tenantId !== this.options.expectedTenantId)
26
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_CONTEXT_MISMATCH', response.status);
27
+ const data = result.data.data, actual = data.jobRef ?? data.job?.jobRef;
28
+ const request = input;
29
+ if (request.requestId && actual !== tenantWebJobRef(this.options.expectedTenantId, request.requestId) || request.jobRef && actual !== request.jobRef)
30
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_CONTEXT_MISMATCH', response.status);
31
+ return result.data;
32
+ }
33
+ async webProvider() {
34
+ const response = await this.request(this.url('provider', 22)), value = tenantWebCrawlProviderSchema.safeParse(await this.json(response));
35
+ if (!value.success)
36
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_RESPONSE_INVALID', response.status);
37
+ return value.data;
38
+ }
39
+ }
@@ -0,0 +1,42 @@
1
+ /** 显式 Provider23;继承旧入口但不改变其默认发现版本。 */
2
+ import { type TenantWebToolName, type TenantWebDynamicToolInput, type TenantWebDynamicToolResponse } from './internal/serving-contracts/index.js';
3
+ import { KnowledgeTenantRuntimeClient } from './tenant-runtime.js';
4
+ import { TenantManagementSdkError } from './tenant-management.js';
5
+ export declare class KnowledgeTenantWebDynamicClient extends KnowledgeTenantRuntimeClient {
6
+ protected protocolVersion(): 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25;
7
+ protected failure(raw: unknown, status: number): TenantManagementSdkError<string> | null;
8
+ webTool<K extends TenantWebToolName>(name: K, raw: TenantWebDynamicToolInput<K>, options?: {
9
+ signal?: AbortSignal;
10
+ }): Promise<TenantWebDynamicToolResponse<K>>;
11
+ webProvider(): Promise<{
12
+ schemaVersion: 23;
13
+ capabilities: ["TENANT_MANAGEMENT_V1", "TENANT_WORKFLOW_V1", "TENANT_CURRENTNESS_V2", "TENANT_SOURCE_V1", "TENANT_WORKSPACE_METADATA_V1", "TENANT_PROJECT_CONTEXT_V1", "TENANT_RUNTIME_STATUS_V1", "TENANT_WEB_COLLECTION_SPEC_V1", "TENANT_WEB_CRAWL_V1", "TENANT_WEB_DYNAMIC_V1"];
14
+ tools: string[];
15
+ provider: "knowledge-v2";
16
+ codeRevision: string;
17
+ authorityVersion: 2;
18
+ context: "TENANT_EXPLICIT_MANAGEMENT_V1";
19
+ managementConfigured: boolean;
20
+ resource: string;
21
+ issuer: string;
22
+ authorizationEndpoint: string;
23
+ tokenEndpoint: string;
24
+ revocationEndpoint: string;
25
+ mcpEndpoint: string;
26
+ callEndpoint: string;
27
+ contentEndpoint: string;
28
+ contentContextHeader: "x-knowledge-tenant-id";
29
+ legacyProviderEndpoint: string;
30
+ protocols: ("2026-07-28" | "2025-06-18")[];
31
+ requestMaxBytes: 131072;
32
+ resultMaxBytes: 524288;
33
+ submissionMaxBytes: 65536;
34
+ inlineContentMaxBytes: 32768;
35
+ contentReadMaxBytes: 16777216;
36
+ collectionMode: "MANUAL_ONLY_OAUTH";
37
+ projectContentEndpoint: string;
38
+ projectContentPolicyHeader: "x-knowledge-authority-policy";
39
+ projectContentProjectHeader: "x-knowledge-project-key";
40
+ projectControlIdentitySchemaVersion: 19;
41
+ }>;
42
+ }
@@ -0,0 +1,39 @@
1
+ /** 显式 Provider23;继承旧入口但不改变其默认发现版本。 */
2
+ import { tenantWebDynamicToolSchemas, tenantWebDynamicEnvelopeSchema, tenantWebDynamicProviderSchema, tenantWebErrorSchema, tenantWebSafeErrorRef } from './internal/serving-contracts/index.js';
3
+ import { tenantWebJobRef } from './internal/contracts/index.js';
4
+ import { KnowledgeTenantRuntimeClient } from './tenant-runtime.js';
5
+ import { TenantManagementSdkError } from './tenant-management.js';
6
+ export class KnowledgeTenantWebDynamicClient extends KnowledgeTenantRuntimeClient {
7
+ protocolVersion() { return 23; }
8
+ failure(raw, status) {
9
+ const value = tenantWebErrorSchema.safeParse(raw);
10
+ if (!value.success)
11
+ return null;
12
+ const ref = tenantWebSafeErrorRef(value.data.ref, this.options.expectedTenantId);
13
+ return new TenantManagementSdkError(value.data.errorCode, status, { ...value.data, ref });
14
+ }
15
+ async webTool(name, raw, options = {}) {
16
+ if (!Object.hasOwn(tenantWebDynamicToolSchemas, name))
17
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_OPERATION_UNSUPPORTED', 0);
18
+ const input = tenantWebDynamicToolSchemas[name].parse(raw), body = JSON.stringify({ tool: name, arguments: input });
19
+ if (Buffer.byteLength(body) > 131072)
20
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_REQUEST_TOO_LARGE', 0);
21
+ const response = await this.request(this.url('call', 23), { method: 'POST', headers: { 'content-type': 'application/json' }, body, ...(options.signal ? { signal: options.signal } : {}) });
22
+ const result = tenantWebDynamicEnvelopeSchema(name).safeParse(await this.json(response));
23
+ if (!result.success)
24
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_RESPONSE_INVALID', response.status);
25
+ if (result.data.tenantId !== this.options.expectedTenantId)
26
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_CONTEXT_MISMATCH', response.status);
27
+ const data = result.data.data, actual = data.jobRef ?? data.job?.jobRef;
28
+ const request = input;
29
+ if (request.requestId && actual !== tenantWebJobRef(this.options.expectedTenantId, request.requestId) || request.jobRef && actual !== request.jobRef)
30
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_CONTEXT_MISMATCH', response.status);
31
+ return result.data;
32
+ }
33
+ async webProvider() {
34
+ const response = await this.request(this.url('provider', 23)), value = tenantWebDynamicProviderSchema.safeParse(await this.json(response));
35
+ if (!value.success)
36
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_RESPONSE_INVALID', response.status);
37
+ return value.data;
38
+ }
39
+ }
@@ -0,0 +1,43 @@
1
+ import { type TenantWebWorkflowToolName, type TenantWebWorkflowToolInput, type TenantWebWorkflowToolResponse } from './internal/serving-contracts/index.js';
2
+ import { KnowledgeTenantWebContentClient } from './tenant-web-content.js';
3
+ import { TenantManagementSdkError } from './tenant-management.js';
4
+ import { type MaterialStreamOptions } from './material-stream.js';
5
+ export declare class KnowledgeTenantWebWorkflowClient extends KnowledgeTenantWebContentClient {
6
+ protected protocolVersion(): 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25;
7
+ protected failure(raw: unknown, status: number): TenantManagementSdkError<string> | null;
8
+ workflowTool<K extends TenantWebWorkflowToolName>(name: K, raw: TenantWebWorkflowToolInput<K>, options?: {
9
+ signal?: AbortSignal;
10
+ }): Promise<TenantWebWorkflowToolResponse<K>>;
11
+ workflowProvider(): Promise<{
12
+ schemaVersion: 25;
13
+ collectionMode: "EXPLICIT_HOST_WITH_OPT_IN_DUE";
14
+ tools: string[];
15
+ capabilities: ["TENANT_MANAGEMENT_V1", "TENANT_WORKFLOW_V1", "TENANT_CURRENTNESS_V2", "TENANT_SOURCE_V1", "TENANT_WORKSPACE_METADATA_V1", "TENANT_PROJECT_CONTEXT_V1", "TENANT_RUNTIME_STATUS_V1", "TENANT_WEB_COLLECTION_SPEC_V1", "TENANT_WEB_CRAWL_V1", "TENANT_WEB_DYNAMIC_V1", "TENANT_WEB_CONTENT_V1", "TENANT_WEB_WORKFLOW_V1"];
16
+ provider: "knowledge-v2";
17
+ codeRevision: string;
18
+ authorityVersion: 2;
19
+ context: "TENANT_EXPLICIT_MANAGEMENT_V1";
20
+ managementConfigured: boolean;
21
+ resource: string;
22
+ issuer: string;
23
+ authorizationEndpoint: string;
24
+ tokenEndpoint: string;
25
+ revocationEndpoint: string;
26
+ mcpEndpoint: string;
27
+ callEndpoint: string;
28
+ contentEndpoint: string;
29
+ contentContextHeader: "x-knowledge-tenant-id";
30
+ legacyProviderEndpoint: string;
31
+ protocols: ("2026-07-28" | "2025-06-18")[];
32
+ requestMaxBytes: 131072;
33
+ resultMaxBytes: 524288;
34
+ submissionMaxBytes: 65536;
35
+ inlineContentMaxBytes: 32768;
36
+ contentReadMaxBytes: 16777216;
37
+ projectContentEndpoint: string;
38
+ projectContentPolicyHeader: "x-knowledge-authority-policy";
39
+ projectContentProjectHeader: "x-knowledge-project-key";
40
+ projectControlIdentitySchemaVersion: 19;
41
+ }>;
42
+ stream(ref: string, options?: MaterialStreamOptions): Promise<import("./material-stream.js").MaterialStreamResponse>;
43
+ }
@@ -0,0 +1,63 @@
1
+ import { tokenValue } from './token-provider.js';
2
+ /** Explicit Provider25 network client; keeps old webTool signatures unchanged. */
3
+ import { createHash } from 'node:crypto';
4
+ import { tenantWebWorkflowToolSchemas as schemas, tenantWebWorkflowEnvelopeSchema, tenantWebWorkflowProviderSchema, tenantWebWorkflowErrorSchema, tenantWebSafeErrorRef } from './internal/serving-contracts/index.js';
5
+ import { tenantWebJobRef, parseTenantResourceRef, tenantStorageKey } from './internal/contracts/index.js';
6
+ import { KnowledgeTenantWebContentClient } from './tenant-web-content.js';
7
+ import { TenantManagementSdkError } from './tenant-management.js';
8
+ import { materialStream } from './material-stream.js';
9
+ export class KnowledgeTenantWebWorkflowClient extends KnowledgeTenantWebContentClient {
10
+ protocolVersion() { return 25; }
11
+ failure(raw, status) { const v = tenantWebWorkflowErrorSchema.safeParse(raw); return v.success ? new TenantManagementSdkError(v.data.errorCode, status, { ...v.data, ref: tenantWebSafeErrorRef(v.data.ref, this.options.expectedTenantId) }) : null; }
12
+ async workflowTool(name, raw, options = {}) {
13
+ if (!Object.hasOwn(schemas, name))
14
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_OPERATION_UNSUPPORTED', 0);
15
+ const input = schemas[name].parse(raw), body = JSON.stringify({ tool: name, arguments: input });
16
+ if (Buffer.byteLength(body) > 131072)
17
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_REQUEST_TOO_LARGE', 0);
18
+ const response = await this.request(this.url('call', 25), { method: 'POST', headers: { 'content-type': 'application/json' }, body, ...(options.signal ? { signal: options.signal } : {}) }), parsed = tenantWebWorkflowEnvelopeSchema(name).safeParse(await this.json(response));
19
+ if (!parsed.success)
20
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_RESPONSE_INVALID', response.status);
21
+ const value = parsed.data;
22
+ const request = input, data = value.data, actual = data.jobRef ?? data.job?.jobRef, expected = name === 'tenant_web_collect_submit' || name === 'tenant_web_collect_refresh' ? tenantWebJobRef(this.options.expectedTenantId, request.requestId) : request.jobRef;
23
+ if (value.tenantId !== this.options.expectedTenantId || expected && actual !== expected)
24
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_CONTEXT_MISMATCH', response.status);
25
+ if (name === 'tenant_web_collect_read' && data.result?.delivery === 'INLINE_BASE64') {
26
+ const r = data.result, b = Buffer.from(r.contentBase64 ?? '', 'base64');
27
+ if (r.contentBase64 !== b.toString('base64') || b.length !== r.byteLength || 'sha256:' + createHash('sha256').update(b).digest('hex') !== r.item?.identityHash)
28
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_CONTENT_IDENTITY_MISMATCH', response.status);
29
+ }
30
+ return value;
31
+ }
32
+ async workflowProvider() { const r = await this.request(this.url('provider', 25)), v = tenantWebWorkflowProviderSchema.safeParse(await this.json(r)); if (!v.success)
33
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_RESPONSE_INVALID', r.status); return v.data; }
34
+ async stream(ref, options = {}) {
35
+ const p = parseTenantResourceRef(ref);
36
+ if (!p || !['evidence', 'source_document'].includes(p.resourceType))
37
+ return super.stream(ref, options);
38
+ if (p.storageKey !== tenantStorageKey(this.options.expectedTenantId))
39
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_CONTEXT_MISMATCH', 0);
40
+ const url = this.url('content', 25);
41
+ url.searchParams.set('ref', ref);
42
+ const checked = async (input, init) => { const r = await this.request(new URL(String(input)), init); if (r.status !== 200 && r.status !== 206) {
43
+ await this.json(r);
44
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_CONTENT_FAILURE', r.status);
45
+ } if (r.headers.get('x-knowledge-tenant-id') !== this.options.expectedTenantId || r.headers.get('x-knowledge-authority-policy') !== 'TENANT_NATIVE') {
46
+ await r.body?.cancel();
47
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_CONTEXT_MISMATCH', r.status);
48
+ } return r; };
49
+ try {
50
+ const r = await materialStream(checked, url, await tokenValue(this.options), options);
51
+ if (r.contentClass !== (p.resourceType === 'evidence' ? 'RAW_EVIDENCE' : 'REGISTERED_MATERIAL')) {
52
+ await r.body?.cancel();
53
+ throw new Error();
54
+ }
55
+ return r;
56
+ }
57
+ catch (e) {
58
+ if (e instanceof TenantManagementSdkError)
59
+ throw e;
60
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_CONTENT_FAILURE', 0);
61
+ }
62
+ }
63
+ }
@@ -0,0 +1,42 @@
1
+ /** 显式 Provider21;继承旧入口但不改变其默认发现版本。 */
2
+ import { type TenantWebToolName, type TenantWebToolInput, type TenantWebToolResponse } from './internal/serving-contracts/index.js';
3
+ import { KnowledgeTenantRuntimeClient } from './tenant-runtime.js';
4
+ import { TenantManagementSdkError } from './tenant-management.js';
5
+ export declare class KnowledgeTenantWebCollectionClient extends KnowledgeTenantRuntimeClient {
6
+ protected protocolVersion(): 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25;
7
+ protected failure(raw: unknown, status: number): TenantManagementSdkError<string> | null;
8
+ webTool<K extends TenantWebToolName>(name: K, raw: TenantWebToolInput<K>, options?: {
9
+ signal?: AbortSignal;
10
+ }): Promise<TenantWebToolResponse<K>>;
11
+ webProvider(): Promise<{
12
+ schemaVersion: 21;
13
+ tools: string[];
14
+ capabilities: ["TENANT_MANAGEMENT_V1", "TENANT_WORKFLOW_V1", "TENANT_CURRENTNESS_V2", "TENANT_SOURCE_V1", "TENANT_WORKSPACE_METADATA_V1", "TENANT_PROJECT_CONTEXT_V1", "TENANT_RUNTIME_STATUS_V1", "TENANT_WEB_COLLECTION_SPEC_V1"];
15
+ provider: "knowledge-v2";
16
+ codeRevision: string;
17
+ authorityVersion: 2;
18
+ context: "TENANT_EXPLICIT_MANAGEMENT_V1";
19
+ managementConfigured: boolean;
20
+ resource: string;
21
+ issuer: string;
22
+ authorizationEndpoint: string;
23
+ tokenEndpoint: string;
24
+ revocationEndpoint: string;
25
+ mcpEndpoint: string;
26
+ callEndpoint: string;
27
+ contentEndpoint: string;
28
+ contentContextHeader: "x-knowledge-tenant-id";
29
+ legacyProviderEndpoint: string;
30
+ protocols: ("2026-07-28" | "2025-06-18")[];
31
+ requestMaxBytes: 131072;
32
+ resultMaxBytes: 524288;
33
+ submissionMaxBytes: 65536;
34
+ inlineContentMaxBytes: 32768;
35
+ contentReadMaxBytes: 16777216;
36
+ collectionMode: "MANUAL_ONLY_OAUTH";
37
+ projectContentEndpoint: string;
38
+ projectContentPolicyHeader: "x-knowledge-authority-policy";
39
+ projectContentProjectHeader: "x-knowledge-project-key";
40
+ projectControlIdentitySchemaVersion: 19;
41
+ }>;
42
+ }
@@ -0,0 +1,39 @@
1
+ /** 显式 Provider21;继承旧入口但不改变其默认发现版本。 */
2
+ import { tenantWebToolSchemas, tenantWebEnvelopeSchema, tenantWebProviderSchema, tenantWebErrorSchema, tenantWebSafeErrorRef } from './internal/serving-contracts/index.js';
3
+ import { tenantWebJobRef } from './internal/contracts/index.js';
4
+ import { KnowledgeTenantRuntimeClient } from './tenant-runtime.js';
5
+ import { TenantManagementSdkError } from './tenant-management.js';
6
+ export class KnowledgeTenantWebCollectionClient extends KnowledgeTenantRuntimeClient {
7
+ protocolVersion() { return 21; }
8
+ failure(raw, status) {
9
+ const value = tenantWebErrorSchema.safeParse(raw);
10
+ if (!value.success)
11
+ return null;
12
+ const ref = tenantWebSafeErrorRef(value.data.ref, this.options.expectedTenantId);
13
+ return new TenantManagementSdkError(value.data.errorCode, status, { ...value.data, ref });
14
+ }
15
+ async webTool(name, raw, options = {}) {
16
+ if (!Object.hasOwn(tenantWebToolSchemas, name))
17
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_OPERATION_UNSUPPORTED', 0);
18
+ const input = tenantWebToolSchemas[name].parse(raw), body = JSON.stringify({ tool: name, arguments: input });
19
+ if (Buffer.byteLength(body) > 131072)
20
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_REQUEST_TOO_LARGE', 0);
21
+ const response = await this.request(this.url('call', 21), { method: 'POST', headers: { 'content-type': 'application/json' }, body, ...(options.signal ? { signal: options.signal } : {}) });
22
+ const result = tenantWebEnvelopeSchema(name).safeParse(await this.json(response));
23
+ if (!result.success)
24
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_RESPONSE_INVALID', response.status);
25
+ if (result.data.tenantId !== this.options.expectedTenantId)
26
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_CONTEXT_MISMATCH', response.status);
27
+ const data = result.data.data, actual = data.jobRef ?? data.job?.jobRef;
28
+ const request = input;
29
+ if (request.requestId && actual !== tenantWebJobRef(this.options.expectedTenantId, request.requestId) || request.jobRef && actual !== request.jobRef)
30
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_CONTEXT_MISMATCH', response.status);
31
+ return result.data;
32
+ }
33
+ async webProvider() {
34
+ const response = await this.request(this.url('provider', 21)), value = tenantWebProviderSchema.safeParse(await this.json(response));
35
+ if (!value.success)
36
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_RESPONSE_INVALID', response.status);
37
+ return value.data;
38
+ }
39
+ }
@@ -0,0 +1,36 @@
1
+ /** Explicit v18 client; the original management client keeps its v17 default contract. */
2
+ import { type TenantWorkspaceExtraToolName, type TenantWorkspaceExtraInput, type TenantWorkspaceResponse } from './internal/serving-contracts/index.js';
3
+ import { KnowledgeTenantManagementClient } from './tenant-management.js';
4
+ export declare class KnowledgeTenantWorkspaceClient extends KnowledgeTenantManagementClient {
5
+ protected protocolVersion(): 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25;
6
+ workspaceTool<K extends TenantWorkspaceExtraToolName>(name: K, raw: TenantWorkspaceExtraInput<K>, options?: {
7
+ signal?: AbortSignal;
8
+ }): Promise<TenantWorkspaceResponse<K>>;
9
+ workspaceProvider(): Promise<{
10
+ provider: "knowledge-v2";
11
+ codeRevision: string;
12
+ authorityVersion: 2;
13
+ context: "TENANT_EXPLICIT_MANAGEMENT_V1";
14
+ managementConfigured: boolean;
15
+ resource: string;
16
+ issuer: string;
17
+ authorizationEndpoint: string;
18
+ tokenEndpoint: string;
19
+ revocationEndpoint: string;
20
+ mcpEndpoint: string;
21
+ callEndpoint: string;
22
+ contentEndpoint: string;
23
+ contentContextHeader: "x-knowledge-tenant-id";
24
+ legacyProviderEndpoint: string;
25
+ protocols: ("2026-07-28" | "2025-06-18")[];
26
+ requestMaxBytes: 131072;
27
+ resultMaxBytes: 524288;
28
+ submissionMaxBytes: 65536;
29
+ inlineContentMaxBytes: 32768;
30
+ contentReadMaxBytes: 16777216;
31
+ collectionMode: "MANUAL_ONLY_OAUTH";
32
+ schemaVersion: 18;
33
+ tools: string[];
34
+ capabilities: ["TENANT_MANAGEMENT_V1", "TENANT_WORKFLOW_V1", "TENANT_CURRENTNESS_V2", "TENANT_SOURCE_V1", "TENANT_WORKSPACE_METADATA_V1"];
35
+ }>;
36
+ }
@@ -0,0 +1,21 @@
1
+ /** Explicit v18 client; the original management client keeps its v17 default contract. */
2
+ import { tenantWorkspaceExtraToolSchemas, tenantWorkspaceEnvelopeSchema, tenantWorkspaceProviderSchema } from './internal/serving-contracts/index.js';
3
+ import { KnowledgeTenantManagementClient, TenantManagementSdkError } from './tenant-management.js';
4
+ export class KnowledgeTenantWorkspaceClient extends KnowledgeTenantManagementClient {
5
+ protocolVersion() { return 18; }
6
+ async workspaceTool(name, raw, options = {}) {
7
+ if (!Object.hasOwn(tenantWorkspaceExtraToolSchemas, name))
8
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_OPERATION_UNSUPPORTED', 0);
9
+ const input = tenantWorkspaceExtraToolSchemas[name].parse(raw), body = JSON.stringify({ tool: name, arguments: input });
10
+ if (Buffer.byteLength(body) > 131072)
11
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_REQUEST_TOO_LARGE', 0);
12
+ const response = await this.request(this.url('call'), { method: 'POST', headers: { 'content-type': 'application/json' }, body, ...(options.signal ? { signal: options.signal } : {}) }), result = tenantWorkspaceEnvelopeSchema(name).safeParse(await this.json(response));
13
+ if (!result.success)
14
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_RESPONSE_INVALID', response.status);
15
+ if (result.data.tenantId !== this.options.expectedTenantId)
16
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_CONTEXT_MISMATCH', response.status);
17
+ return result.data;
18
+ }
19
+ async workspaceProvider() { const response = await this.request(this.url('provider', 18)), result = tenantWorkspaceProviderSchema.safeParse(await this.json(response)); if (!result.success)
20
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_RESPONSE_INVALID', response.status); return result.data; }
21
+ }
@@ -0,0 +1,14 @@
1
+ /// <reference types="node" />
2
+ /** 请求前取得当前凭据;mutation 永不因认证/网络失败被自动重放。 */
3
+ export interface TokenProvider {
4
+ getToken(options?: {
5
+ forceRefresh?: boolean;
6
+ }): Promise<string>;
7
+ }
8
+ export interface TokenOptions {
9
+ token?: string;
10
+ tokenProvider?: TokenProvider;
11
+ }
12
+ export declare function validateTokenOptions(o: TokenOptions): void;
13
+ export declare function tokenValue(o: TokenOptions): Promise<string>;
14
+ export declare function authorizedFetch(fetchImpl: typeof fetch, o: TokenOptions, origin: string): typeof fetch;
@@ -0,0 +1,21 @@
1
+ export function validateTokenOptions(o) { if ((o.token !== undefined) === (o.tokenProvider !== undefined))
2
+ throw Error('AUTH_CREDENTIAL_SOURCE_CONFLICT'); if (o.tokenProvider && typeof o.tokenProvider.getToken !== 'function')
3
+ throw Error('AUTH_TOKEN_PROVIDER_INVALID'); if (o.token && (!/^[^\s\u0000-\u001f\u007f]{16,4096}$/.test(o.token)))
4
+ throw Error('AUTH_TOKEN_INVALID'); }
5
+ export async function tokenValue(o) { const value = o.tokenProvider ? await o.tokenProvider.getToken() : o.token; if (!value || !/^[^\s\u0000-\u001f\u007f]{16,4096}$/.test(value))
6
+ throw Error('AUTH_TOKEN_INVALID'); return value; }
7
+ export function authorizedFetch(fetchImpl, o, origin) {
8
+ validateTokenOptions(o);
9
+ return async (input, init = {}) => {
10
+ const url = new URL(input instanceof Request ? input.url : String(input));
11
+ if (url.origin !== origin)
12
+ throw Error('AUTH_ENDPOINT_MISMATCH');
13
+ const run = async (force = false) => { const headers = new Headers(init.headers); headers.set('authorization', 'Bearer ' + (force && o.tokenProvider ? await o.tokenProvider.getToken({ forceRefresh: true }) : await tokenValue(o))); return fetchImpl(input, { ...init, headers: Object.fromEntries(headers), redirect: 'error', signal: init.signal ? AbortSignal.any([init.signal, AbortSignal.timeout(60000)]) : AbortSignal.timeout(60000) }); };
14
+ const r = await run();
15
+ if (r.status === 401 && o.tokenProvider && ['GET', 'HEAD'].includes((init.method ?? 'GET').toUpperCase())) {
16
+ await r.body?.cancel();
17
+ return run(true);
18
+ }
19
+ return r;
20
+ };
21
+ }
package/package.json CHANGED
@@ -1,6 +1,48 @@
1
1
  {
2
2
  "name": "@native-knowledge/knowledge-sdk",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.1.0-rc.2",
4
+ "private": false,
5
+ "type": "module",
6
+ "description": "Typed remote native-knowledge clients with OAuth and Agent-native discovery",
7
+ "engines": {
8
+ "node": ">=24"
9
+ },
10
+ "license": "Apache-2.0",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/SENLIN746/native-knowledge.git"
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "README.md",
18
+ "LICENSE",
19
+ "NOTICE"
20
+ ],
21
+ "exports": {
22
+ ".": {
23
+ "types": "./dist/index.d.ts",
24
+ "import": "./dist/index.js",
25
+ "default": "./dist/index.js"
26
+ },
27
+ "./auth": {
28
+ "types": "./dist/auth.d.ts",
29
+ "import": "./dist/auth.js",
30
+ "default": "./dist/auth.js"
31
+ },
32
+ "./session": {
33
+ "types": "./dist/session.d.ts",
34
+ "import": "./dist/session.js",
35
+ "default": "./dist/session.js"
36
+ },
37
+ "./token-provider": {
38
+ "types": "./dist/token-provider.d.ts",
39
+ "import": "./dist/token-provider.js",
40
+ "default": "./dist/token-provider.js"
41
+ }
42
+ },
43
+ "types": "./dist/index.d.ts",
44
+ "dependencies": {
45
+ "zod": "^4.6.7",
46
+ "@types/node": "24.13.3"
47
+ }
6
48
  }