@native-knowledge/knowledge-sdk 0.1.0-rc.1 → 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 (206) hide show
  1. package/LICENSE +202 -21
  2. package/NOTICE +29 -0
  3. package/README.md +26 -38
  4. package/dist/{types/sdk/agent-entry.d.ts → agent-entry.d.ts} +3 -3
  5. package/dist/agent-entry.js +153 -0
  6. package/dist/{types/sdk/agent-guidance-error.d.ts → agent-guidance-error.d.ts} +1 -1
  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/{types/sdk/index.d.ts → index.d.ts} +15 -14
  11. package/dist/index.js +159 -6570
  12. package/dist/internal/contracts/artifact.js +103 -0
  13. package/dist/internal/contracts/collection-control.js +69 -0
  14. package/dist/internal/contracts/collection.js +174 -0
  15. package/dist/internal/contracts/common.js +16 -0
  16. package/dist/internal/contracts/currentness.js +221 -0
  17. package/dist/internal/contracts/event.js +35 -0
  18. package/dist/internal/contracts/evidence.js +171 -0
  19. package/dist/{types → internal}/contracts/index.d.ts +0 -1
  20. package/dist/internal/contracts/index.js +54 -0
  21. package/dist/internal/contracts/material-capability.js +8 -0
  22. package/dist/internal/contracts/material-carrier.js +15 -0
  23. package/dist/internal/contracts/material-context.js +9 -0
  24. package/dist/internal/contracts/material-read.js +12 -0
  25. package/dist/internal/contracts/observation.js +39 -0
  26. package/dist/internal/contracts/persistence.js +239 -0
  27. package/dist/internal/contracts/project-intent.js +121 -0
  28. package/dist/internal/contracts/projection.js +194 -0
  29. package/dist/internal/contracts/public-reference.js +87 -0
  30. package/dist/internal/contracts/reference-record.js +55 -0
  31. package/dist/internal/contracts/remote-file.js +159 -0
  32. package/dist/internal/contracts/resource-scope.js +38 -0
  33. package/dist/internal/contracts/review-packet.js +61 -0
  34. package/dist/internal/contracts/review-plane.js +89 -0
  35. package/dist/internal/contracts/rich-document.js +184 -0
  36. package/dist/internal/contracts/runtime-compatibility.js +55 -0
  37. package/dist/internal/contracts/runtime.js +68 -0
  38. package/dist/internal/contracts/scheduler.js +256 -0
  39. package/dist/internal/contracts/signal.js +77 -0
  40. package/dist/internal/contracts/source-governance.js +194 -0
  41. package/dist/internal/contracts/source.js +32 -0
  42. package/dist/internal/contracts/tenant-budget.js +34 -0
  43. package/dist/internal/contracts/tenant-collection-request.js +58 -0
  44. package/dist/internal/contracts/tenant-collection.js +66 -0
  45. package/dist/internal/contracts/tenant-currentness.js +26 -0
  46. package/dist/internal/contracts/tenant-management.js +27 -0
  47. package/dist/internal/contracts/tenant-material-api.js +46 -0
  48. package/dist/internal/contracts/tenant-material-json-schema.js +16 -0
  49. package/dist/internal/contracts/tenant-pdf-text.js +13 -0
  50. package/dist/internal/contracts/tenant-project-control.js +19 -0
  51. package/dist/internal/contracts/tenant-public-reference.js +26 -0
  52. package/dist/internal/contracts/tenant-resource-api.js +70 -0
  53. package/dist/internal/contracts/tenant-resource.js +118 -0
  54. package/dist/internal/contracts/tenant-rich-document.js +17 -0
  55. package/dist/internal/contracts/tenant-source-binding.js +33 -0
  56. package/dist/internal/contracts/tenant-source-bridge.js +9 -0
  57. package/dist/internal/contracts/tenant-source-cutover.js +26 -0
  58. package/dist/internal/contracts/tenant-source-document.js +38 -0
  59. package/dist/internal/contracts/tenant-source-lease.js +5 -0
  60. package/dist/internal/contracts/tenant-source.js +83 -0
  61. package/dist/internal/contracts/tenant-web-collection.js +118 -0
  62. package/dist/internal/contracts/tenant-web-content-plan.js +39 -0
  63. package/dist/internal/contracts/tenant-web-content-result.js +15 -0
  64. package/dist/internal/contracts/tenant-web-content.js +16 -0
  65. package/dist/internal/contracts/tenant-web-crawl.js +55 -0
  66. package/dist/internal/contracts/tenant-web-dynamic.js +68 -0
  67. package/dist/internal/contracts/tenant-web-results.js +41 -0
  68. package/dist/internal/contracts/tenant-web-workflow.js +29 -0
  69. package/dist/internal/serving-contracts/agent-catalog.js +56 -0
  70. package/dist/internal/serving-contracts/agent-entry.js +57 -0
  71. package/dist/internal/serving-contracts/agent-guidance-shapes.js +12 -0
  72. package/dist/internal/serving-contracts/agent-input-hints.js +104 -0
  73. package/dist/internal/serving-contracts/body-search.js +16 -0
  74. package/dist/internal/serving-contracts/consumer.js +45 -0
  75. package/dist/internal/serving-contracts/core.js +76 -0
  76. package/dist/internal/serving-contracts/http.js +64 -0
  77. package/dist/{types → internal}/serving-contracts/index.d.ts +1 -0
  78. package/dist/internal/serving-contracts/index.js +25 -0
  79. package/dist/internal/serving-contracts/management.js +15 -0
  80. package/dist/internal/serving-contracts/material-capabilities.js +14 -0
  81. package/dist/internal/serving-contracts/material-index-status.js +5 -0
  82. package/dist/internal/serving-contracts/mcp.js +140 -0
  83. package/dist/internal/serving-contracts/tenant-governance.js +13 -0
  84. package/dist/internal/serving-contracts/tenant-management.js +89 -0
  85. package/dist/internal/serving-contracts/tenant-project.js +39 -0
  86. package/dist/internal/serving-contracts/tenant-runtime.js +37 -0
  87. package/dist/internal/serving-contracts/tenant-session.d.ts +87 -0
  88. package/dist/internal/serving-contracts/tenant-session.js +8 -0
  89. package/dist/internal/serving-contracts/tenant-web-content.js +20 -0
  90. package/dist/internal/serving-contracts/tenant-web-crawl.js +13 -0
  91. package/dist/internal/serving-contracts/tenant-web-dynamic.js +20 -0
  92. package/dist/internal/serving-contracts/tenant-web-workflow.js +36 -0
  93. package/dist/internal/serving-contracts/tenant-web.js +53 -0
  94. package/dist/internal/serving-contracts/tenant-workspace.js +28 -0
  95. package/dist/internal/serving-contracts/workflow.js +37 -0
  96. package/dist/material-stream.js +29 -0
  97. package/dist/{types/sdk/oauth.d.ts → oauth.d.ts} +18 -18
  98. package/dist/oauth.js +539 -0
  99. package/dist/{types/sdk/resource.d.ts → resource.d.ts} +5 -5
  100. package/dist/resource.js +123 -0
  101. package/dist/session.d.ts +4 -0
  102. package/dist/session.js +3 -0
  103. package/dist/tenant-client.d.ts +169 -0
  104. package/dist/tenant-client.js +58 -0
  105. package/dist/{types/sdk/tenant-management.d.ts → tenant-management.d.ts} +6 -6
  106. package/dist/tenant-management.js +149 -0
  107. package/dist/{types/sdk/tenant-project.d.ts → tenant-project.d.ts} +1 -1
  108. package/dist/tenant-project.js +63 -0
  109. package/dist/{types/sdk/tenant-runtime.d.ts → tenant-runtime.d.ts} +1 -1
  110. package/dist/tenant-runtime.js +17 -0
  111. package/dist/{types/sdk/tenant-web-content.d.ts → tenant-web-content.d.ts} +1 -1
  112. package/dist/tenant-web-content.js +70 -0
  113. package/dist/{types/sdk/tenant-web-crawl.d.ts → tenant-web-crawl.d.ts} +1 -1
  114. package/dist/tenant-web-crawl.js +39 -0
  115. package/dist/{types/sdk/tenant-web-dynamic.d.ts → tenant-web-dynamic.d.ts} +1 -1
  116. package/dist/tenant-web-dynamic.js +39 -0
  117. package/dist/{types/sdk/tenant-web-workflow.d.ts → tenant-web-workflow.d.ts} +1 -1
  118. package/dist/tenant-web-workflow.js +63 -0
  119. package/dist/{types/sdk/tenant-web.d.ts → tenant-web.d.ts} +1 -1
  120. package/dist/tenant-web.js +39 -0
  121. package/dist/{types/sdk/tenant-workspace.d.ts → tenant-workspace.d.ts} +1 -1
  122. package/dist/tenant-workspace.js +21 -0
  123. package/dist/token-provider.d.ts +14 -0
  124. package/dist/token-provider.js +21 -0
  125. package/package.json +27 -15
  126. package/dist/types/contracts/resource-transfer.d.ts +0 -24
  127. package/dist/types/sdk/resource-integrity.d.ts +0 -21
  128. package/dist/types/sdk/transport.d.ts +0 -16
  129. /package/dist/{types → internal}/contracts/artifact.d.ts +0 -0
  130. /package/dist/{types → internal}/contracts/collection-control.d.ts +0 -0
  131. /package/dist/{types → internal}/contracts/collection.d.ts +0 -0
  132. /package/dist/{types → internal}/contracts/common.d.ts +0 -0
  133. /package/dist/{types → internal}/contracts/currentness.d.ts +0 -0
  134. /package/dist/{types → internal}/contracts/event.d.ts +0 -0
  135. /package/dist/{types → internal}/contracts/evidence.d.ts +0 -0
  136. /package/dist/{types → internal}/contracts/material-capability.d.ts +0 -0
  137. /package/dist/{types → internal}/contracts/material-carrier.d.ts +0 -0
  138. /package/dist/{types → internal}/contracts/material-context.d.ts +0 -0
  139. /package/dist/{types → internal}/contracts/material-read.d.ts +0 -0
  140. /package/dist/{types → internal}/contracts/observation.d.ts +0 -0
  141. /package/dist/{types → internal}/contracts/persistence.d.ts +0 -0
  142. /package/dist/{types → internal}/contracts/project-intent.d.ts +0 -0
  143. /package/dist/{types → internal}/contracts/projection.d.ts +0 -0
  144. /package/dist/{types → internal}/contracts/public-reference.d.ts +0 -0
  145. /package/dist/{types → internal}/contracts/reference-record.d.ts +0 -0
  146. /package/dist/{types → internal}/contracts/remote-file.d.ts +0 -0
  147. /package/dist/{types → internal}/contracts/resource-scope.d.ts +0 -0
  148. /package/dist/{types → internal}/contracts/review-packet.d.ts +0 -0
  149. /package/dist/{types → internal}/contracts/review-plane.d.ts +0 -0
  150. /package/dist/{types → internal}/contracts/rich-document.d.ts +0 -0
  151. /package/dist/{types → internal}/contracts/runtime-compatibility.d.ts +0 -0
  152. /package/dist/{types → internal}/contracts/runtime.d.ts +0 -0
  153. /package/dist/{types → internal}/contracts/scheduler.d.ts +0 -0
  154. /package/dist/{types → internal}/contracts/signal.d.ts +0 -0
  155. /package/dist/{types → internal}/contracts/source-governance.d.ts +0 -0
  156. /package/dist/{types → internal}/contracts/source.d.ts +0 -0
  157. /package/dist/{types → internal}/contracts/tenant-budget.d.ts +0 -0
  158. /package/dist/{types → internal}/contracts/tenant-collection-request.d.ts +0 -0
  159. /package/dist/{types → internal}/contracts/tenant-collection.d.ts +0 -0
  160. /package/dist/{types → internal}/contracts/tenant-currentness.d.ts +0 -0
  161. /package/dist/{types → internal}/contracts/tenant-management.d.ts +0 -0
  162. /package/dist/{types → internal}/contracts/tenant-material-api.d.ts +0 -0
  163. /package/dist/{types → internal}/contracts/tenant-pdf-text.d.ts +0 -0
  164. /package/dist/{types → internal}/contracts/tenant-project-control.d.ts +0 -0
  165. /package/dist/{types → internal}/contracts/tenant-public-reference.d.ts +0 -0
  166. /package/dist/{types → internal}/contracts/tenant-resource-api.d.ts +0 -0
  167. /package/dist/{types → internal}/contracts/tenant-resource.d.ts +0 -0
  168. /package/dist/{types → internal}/contracts/tenant-rich-document.d.ts +0 -0
  169. /package/dist/{types → internal}/contracts/tenant-source-binding.d.ts +0 -0
  170. /package/dist/{types → internal}/contracts/tenant-source-bridge.d.ts +0 -0
  171. /package/dist/{types → internal}/contracts/tenant-source-cutover.d.ts +0 -0
  172. /package/dist/{types → internal}/contracts/tenant-source-document.d.ts +0 -0
  173. /package/dist/{types → internal}/contracts/tenant-source-lease.d.ts +0 -0
  174. /package/dist/{types → internal}/contracts/tenant-source.d.ts +0 -0
  175. /package/dist/{types → internal}/contracts/tenant-web-collection.d.ts +0 -0
  176. /package/dist/{types → internal}/contracts/tenant-web-content-plan.d.ts +0 -0
  177. /package/dist/{types → internal}/contracts/tenant-web-content-result.d.ts +0 -0
  178. /package/dist/{types → internal}/contracts/tenant-web-content.d.ts +0 -0
  179. /package/dist/{types → internal}/contracts/tenant-web-crawl.d.ts +0 -0
  180. /package/dist/{types → internal}/contracts/tenant-web-dynamic.d.ts +0 -0
  181. /package/dist/{types → internal}/contracts/tenant-web-results.d.ts +0 -0
  182. /package/dist/{types → internal}/contracts/tenant-web-workflow.d.ts +0 -0
  183. /package/dist/{types → internal}/serving-contracts/agent-catalog.d.ts +0 -0
  184. /package/dist/{types → internal}/serving-contracts/agent-entry.d.ts +0 -0
  185. /package/dist/{types → internal}/serving-contracts/agent-guidance-shapes.d.ts +0 -0
  186. /package/dist/{types → internal}/serving-contracts/agent-input-hints.d.ts +0 -0
  187. /package/dist/{types → internal}/serving-contracts/body-search.d.ts +0 -0
  188. /package/dist/{types → internal}/serving-contracts/consumer.d.ts +0 -0
  189. /package/dist/{types → internal}/serving-contracts/core.d.ts +0 -0
  190. /package/dist/{types → internal}/serving-contracts/http.d.ts +0 -0
  191. /package/dist/{types → internal}/serving-contracts/management.d.ts +0 -0
  192. /package/dist/{types → internal}/serving-contracts/material-capabilities.d.ts +0 -0
  193. /package/dist/{types → internal}/serving-contracts/material-index-status.d.ts +0 -0
  194. /package/dist/{types → internal}/serving-contracts/mcp.d.ts +0 -0
  195. /package/dist/{types → internal}/serving-contracts/tenant-governance.d.ts +0 -0
  196. /package/dist/{types → internal}/serving-contracts/tenant-management.d.ts +0 -0
  197. /package/dist/{types → internal}/serving-contracts/tenant-project.d.ts +0 -0
  198. /package/dist/{types → internal}/serving-contracts/tenant-runtime.d.ts +0 -0
  199. /package/dist/{types → internal}/serving-contracts/tenant-web-content.d.ts +0 -0
  200. /package/dist/{types → internal}/serving-contracts/tenant-web-crawl.d.ts +0 -0
  201. /package/dist/{types → internal}/serving-contracts/tenant-web-dynamic.d.ts +0 -0
  202. /package/dist/{types → internal}/serving-contracts/tenant-web-workflow.d.ts +0 -0
  203. /package/dist/{types → internal}/serving-contracts/tenant-web.d.ts +0 -0
  204. /package/dist/{types → internal}/serving-contracts/tenant-workspace.d.ts +0 -0
  205. /package/dist/{types → internal}/serving-contracts/workflow.d.ts +0 -0
  206. /package/dist/{types/sdk/material-stream.d.ts → material-stream.d.ts} +0 -0
@@ -0,0 +1,17 @@
1
+ /** 明确Provider20;仅此新client采用新registry,旧client默认保持原版本。 */
2
+ import { tenantRuntimeInputSchema, tenantRuntimeStatusEnvelopeSchema, tenantRuntimeProviderSchema } from './internal/serving-contracts/index.js';
3
+ import { KnowledgeTenantProjectClient } from './tenant-project.js';
4
+ import { TenantManagementSdkError } from './tenant-management.js';
5
+ export class KnowledgeTenantRuntimeClient extends KnowledgeTenantProjectClient {
6
+ protocolVersion() { return 20; }
7
+ async runtimeStatus(raw = {}, options = {}) {
8
+ const input = tenantRuntimeInputSchema.parse(raw), response = await this.request(this.url('call', 20), { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ tool: 'tenant_runtime_status', arguments: input }), ...(options.signal ? { signal: options.signal } : {}) }), result = tenantRuntimeStatusEnvelopeSchema.safeParse(await this.json(response));
9
+ if (!result.success)
10
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_RESPONSE_INVALID', response.status);
11
+ if (result.data.tenantId !== this.options.expectedTenantId)
12
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_CONTEXT_MISMATCH', response.status);
13
+ return result.data;
14
+ }
15
+ async runtimeProvider() { const response = await this.request(this.url('provider', 20)), result = tenantRuntimeProviderSchema.safeParse(await this.json(response)); if (!result.success)
16
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_RESPONSE_INVALID', response.status); return result.data; }
17
+ }
@@ -1,5 +1,5 @@
1
1
  /** 显式 Provider24;继承旧入口但不改变其默认发现版本。 */
2
- import { type TenantWebToolName, type TenantWebContentToolInput, type TenantWebContentToolResponse } from '../serving-contracts/index.js';
2
+ import { type TenantWebToolName, type TenantWebContentToolInput, type TenantWebContentToolResponse } from './internal/serving-contracts/index.js';
3
3
  import { KnowledgeTenantRuntimeClient } from './tenant-runtime.js';
4
4
  import { TenantManagementSdkError } from './tenant-management.js';
5
5
  import { type MaterialStreamOptions } from './material-stream.js';
@@ -0,0 +1,70 @@
1
+ import { tokenValue } from './token-provider.js';
2
+ /** 显式 Provider24;继承旧入口但不改变其默认发现版本。 */
3
+ import { tenantWebContentToolSchemas, tenantWebContentEnvelopeSchema, tenantWebContentProviderSchema, tenantWebContentErrorSchema, tenantWebSafeErrorRef } from './internal/serving-contracts/index.js';
4
+ import { tenantWebJobRef, parseTenantResourceRef, tenantStorageKey } from './internal/contracts/index.js';
5
+ import { KnowledgeTenantRuntimeClient } from './tenant-runtime.js';
6
+ import { TenantManagementSdkError } from './tenant-management.js';
7
+ import { materialStream } from './material-stream.js';
8
+ export class KnowledgeTenantWebContentClient extends KnowledgeTenantRuntimeClient {
9
+ protocolVersion() { return 24; }
10
+ failure(raw, status) {
11
+ const value = tenantWebContentErrorSchema.safeParse(raw);
12
+ if (!value.success)
13
+ return null;
14
+ const ref = tenantWebSafeErrorRef(value.data.ref, this.options.expectedTenantId);
15
+ return new TenantManagementSdkError(value.data.errorCode, status, { ...value.data, ref });
16
+ }
17
+ async webTool(name, raw, options = {}) {
18
+ if (!Object.hasOwn(tenantWebContentToolSchemas, name))
19
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_OPERATION_UNSUPPORTED', 0);
20
+ const input = tenantWebContentToolSchemas[name].parse(raw), body = JSON.stringify({ tool: name, arguments: input });
21
+ if (Buffer.byteLength(body) > 131072)
22
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_REQUEST_TOO_LARGE', 0);
23
+ const response = await this.request(this.url('call', 24), { method: 'POST', headers: { 'content-type': 'application/json' }, body, ...(options.signal ? { signal: options.signal } : {}) });
24
+ const result = tenantWebContentEnvelopeSchema(name).safeParse(await this.json(response));
25
+ if (!result.success)
26
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_RESPONSE_INVALID', response.status);
27
+ if (result.data.tenantId !== this.options.expectedTenantId)
28
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_CONTEXT_MISMATCH', response.status);
29
+ const data = result.data.data, actual = data.jobRef ?? data.job?.jobRef;
30
+ const request = input;
31
+ if (request.requestId && actual !== tenantWebJobRef(this.options.expectedTenantId, request.requestId) || request.jobRef && actual !== request.jobRef)
32
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_CONTEXT_MISMATCH', response.status);
33
+ return result.data;
34
+ }
35
+ async stream(ref, options = {}) {
36
+ const parsed = parseTenantResourceRef(ref);
37
+ if (parsed?.resourceType !== 'source_document')
38
+ return super.stream(ref, options);
39
+ if (parsed.storageKey !== tenantStorageKey(this.options.expectedTenantId))
40
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_CONTEXT_MISMATCH', 0);
41
+ const url = this.url('content', 24);
42
+ url.searchParams.set('ref', ref);
43
+ const checked = async (input, init) => { const response = await this.request(new URL(String(input)), init); if (response.status !== 200 && response.status !== 206) {
44
+ await this.json(response);
45
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_CONTENT_FAILURE', response.status);
46
+ } if (response.headers.get('x-knowledge-tenant-id') !== this.options.expectedTenantId || response.headers.get('x-knowledge-authority-policy') !== 'TENANT_NATIVE') {
47
+ await response.body?.cancel();
48
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_CONTEXT_MISMATCH', response.status);
49
+ } return response; };
50
+ try {
51
+ const result = await materialStream(checked, url, await tokenValue(this.options), options);
52
+ if (result.contentClass !== 'REGISTERED_MATERIAL') {
53
+ await result.body?.cancel();
54
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_RESPONSE_INVALID', result.status);
55
+ }
56
+ return result;
57
+ }
58
+ catch (error) {
59
+ if (error instanceof TenantManagementSdkError)
60
+ throw error;
61
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_CONTENT_FAILURE', 0);
62
+ }
63
+ }
64
+ async webProvider() {
65
+ const response = await this.request(this.url('provider', 24)), value = tenantWebContentProviderSchema.safeParse(await this.json(response));
66
+ if (!value.success)
67
+ throw new TenantManagementSdkError('TENANT_MANAGEMENT_SDK_RESPONSE_INVALID', response.status);
68
+ return value.data;
69
+ }
70
+ }
@@ -1,5 +1,5 @@
1
1
  /** 显式 Provider22;继承旧入口但不改变其默认发现版本。 */
2
- import { type TenantWebToolName, type TenantWebToolInput, type TenantWebCrawlToolResponse } from '../serving-contracts/index.js';
2
+ import { type TenantWebToolName, type TenantWebToolInput, type TenantWebCrawlToolResponse } from './internal/serving-contracts/index.js';
3
3
  import { KnowledgeTenantRuntimeClient } from './tenant-runtime.js';
4
4
  import { TenantManagementSdkError } from './tenant-management.js';
5
5
  export declare class KnowledgeTenantWebCrawlClient extends KnowledgeTenantRuntimeClient {
@@ -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
+ }
@@ -1,5 +1,5 @@
1
1
  /** 显式 Provider23;继承旧入口但不改变其默认发现版本。 */
2
- import { type TenantWebToolName, type TenantWebDynamicToolInput, type TenantWebDynamicToolResponse } from '../serving-contracts/index.js';
2
+ import { type TenantWebToolName, type TenantWebDynamicToolInput, type TenantWebDynamicToolResponse } from './internal/serving-contracts/index.js';
3
3
  import { KnowledgeTenantRuntimeClient } from './tenant-runtime.js';
4
4
  import { TenantManagementSdkError } from './tenant-management.js';
5
5
  export declare class KnowledgeTenantWebDynamicClient extends KnowledgeTenantRuntimeClient {
@@ -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
+ }
@@ -1,4 +1,4 @@
1
- import { type TenantWebWorkflowToolName, type TenantWebWorkflowToolInput, type TenantWebWorkflowToolResponse } from '../serving-contracts/index.js';
1
+ import { type TenantWebWorkflowToolName, type TenantWebWorkflowToolInput, type TenantWebWorkflowToolResponse } from './internal/serving-contracts/index.js';
2
2
  import { KnowledgeTenantWebContentClient } from './tenant-web-content.js';
3
3
  import { TenantManagementSdkError } from './tenant-management.js';
4
4
  import { type MaterialStreamOptions } from './material-stream.js';
@@ -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
+ }
@@ -1,5 +1,5 @@
1
1
  /** 显式 Provider21;继承旧入口但不改变其默认发现版本。 */
2
- import { type TenantWebToolName, type TenantWebToolInput, type TenantWebToolResponse } from '../serving-contracts/index.js';
2
+ import { type TenantWebToolName, type TenantWebToolInput, type TenantWebToolResponse } from './internal/serving-contracts/index.js';
3
3
  import { KnowledgeTenantRuntimeClient } from './tenant-runtime.js';
4
4
  import { TenantManagementSdkError } from './tenant-management.js';
5
5
  export declare class KnowledgeTenantWebCollectionClient extends KnowledgeTenantRuntimeClient {
@@ -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
+ }
@@ -1,5 +1,5 @@
1
1
  /** Explicit v18 client; the original management client keeps its v17 default contract. */
2
- import { type TenantWorkspaceExtraToolName, type TenantWorkspaceExtraInput, type TenantWorkspaceResponse } from '../serving-contracts/index.js';
2
+ import { type TenantWorkspaceExtraToolName, type TenantWorkspaceExtraInput, type TenantWorkspaceResponse } from './internal/serving-contracts/index.js';
3
3
  import { KnowledgeTenantManagementClient } from './tenant-management.js';
4
4
  export declare class KnowledgeTenantWorkspaceClient extends KnowledgeTenantManagementClient {
5
5
  protected protocolVersion(): 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25;
@@ -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,36 +1,48 @@
1
1
  {
2
- "version": "0.1.0-rc.1",
2
+ "name": "@native-knowledge/knowledge-sdk",
3
+ "version": "0.1.0-rc.2",
3
4
  "private": false,
4
5
  "type": "module",
5
- "license": "MIT",
6
+ "description": "Typed remote native-knowledge clients with OAuth and Agent-native discovery",
6
7
  "engines": {
7
8
  "node": ">=24"
8
9
  },
10
+ "license": "Apache-2.0",
9
11
  "repository": {
10
12
  "type": "git",
11
13
  "url": "git+https://github.com/SENLIN746/native-knowledge.git"
12
14
  },
13
- "publishConfig": {
14
- "access": "public",
15
- "tag": "next",
16
- "registry": "https://registry.npmjs.org/"
17
- },
18
15
  "files": [
19
16
  "dist",
20
17
  "README.md",
21
- "LICENSE"
18
+ "LICENSE",
19
+ "NOTICE"
22
20
  ],
23
- "name": "@native-knowledge/knowledge-sdk",
24
- "description": "Governed native-knowledge clients for Node.js",
25
21
  "exports": {
26
22
  ".": {
27
- "types": "./dist/types/sdk/index.d.ts",
28
- "import": "./dist/index.js"
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"
29
41
  }
30
42
  },
31
- "types": "./dist/types/sdk/index.d.ts",
43
+ "types": "./dist/index.d.ts",
32
44
  "dependencies": {
33
- "zod": "4.6.7",
45
+ "zod": "^4.6.7",
34
46
  "@types/node": "24.13.3"
35
47
  }
36
- }
48
+ }
@@ -1,24 +0,0 @@
1
- /** Explicit transfer binding leaves historical Provider16 JSON and clients unchanged. */
2
- import { z } from 'zod';
3
- export declare const resourceTransferRequestHeader = "x-knowledge-resource-transfer";
4
- export declare const resourceTransferFeature = "context-v1";
5
- export declare const resourceTransferResponseHeader = "x-knowledge-resource-context";
6
- export declare const resourceTransferBindingSchema: z.ZodObject<{
7
- schemaVersion: z.ZodLiteral<1>;
8
- context: z.ZodDiscriminatedUnion<[z.ZodObject<{
9
- type: z.ZodLiteral<"TENANT">;
10
- tenantId: z.ZodString;
11
- tenantRef: z.ZodString;
12
- }, z.core.$strict>, z.ZodObject<{
13
- type: z.ZodLiteral<"PROJECT">;
14
- tenantId: z.ZodString;
15
- projectKey: z.ZodString;
16
- projectRef: z.ZodString;
17
- }, z.core.$strict>], "type">;
18
- policy: z.ZodEnum<{
19
- LEGACY_PROJECT: "LEGACY_PROJECT";
20
- TENANT_NATIVE: "TENANT_NATIVE";
21
- TENANT_PROJECT_SCOPE: "TENANT_PROJECT_SCOPE";
22
- }>;
23
- refHash: z.ZodString;
24
- }, z.core.$strict>;
@@ -1,21 +0,0 @@
1
- import { type ResourceToolName } from '../contracts/index.js';
2
- export declare const contentHash: (bytes: Uint8Array | string) => string;
3
- export declare function transferBinding(response: Response): {
4
- schemaVersion: 1;
5
- context: {
6
- type: "TENANT";
7
- tenantId: string;
8
- tenantRef: string;
9
- } | {
10
- type: "PROJECT";
11
- tenantId: string;
12
- projectKey: string;
13
- projectRef: string;
14
- };
15
- policy: "LEGACY_PROJECT" | "TENANT_NATIVE" | "TENANT_PROJECT_SCOPE";
16
- refHash: string;
17
- };
18
- export declare function resourceIntegrity(name: ResourceToolName, input: {
19
- ref?: string | undefined;
20
- projectRef?: string | undefined;
21
- }, raw: unknown): void;
@@ -1,16 +0,0 @@
1
- /** A single attempt with a deadline covering headers and body; never retries writes. */
2
- export interface SdkTransportOptions {
3
- timeoutMs?: number;
4
- maxJsonBytes?: number;
5
- maxContentBytes?: number;
6
- }
7
- /** Default logging/JSON must not enumerate credentials or connection configuration. */
8
- export declare function concealClientState(client: object, publicKeys?: string[]): void;
9
- export declare function transportLimits(options?: SdkTransportOptions): {
10
- timeoutMs: number;
11
- maxJsonBytes: number;
12
- maxContentBytes: number;
13
- };
14
- export declare function deadlineFetch(fetchImpl: typeof fetch, timeoutMs: number): typeof fetch;
15
- export declare function boundedBytes(response: Response, maxBytes: number, prefix: string): Promise<Buffer>;
16
- export declare function boundedJson(response: Response, maxBytes: number, prefix: string): Promise<unknown>;
File without changes
File without changes
File without changes
File without changes
File without changes