@dcdr/contracts 2.3.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -403,6 +403,14 @@ See full feature matrix: [docs/TIERS_FEATURE_MATRIX.md](docs/TIERS_FEATURE_MATRI
403
403
 
404
404
  ---
405
405
 
406
+ ## Managed storage credentials
407
+
408
+ Cloud-managed assets keep tenant-visible storage descriptors and concrete secrets separate:
409
+
410
+ - `DcdrAssetStorageDescriptor` stays secret-free and travels through entitlements.
411
+ - Backend/runtime secret exchange uses the shared `storage.credentials.contract` surface.
412
+ - Current runtime support resolves Google Cloud service-account credentials for managed buckets and leaves room for future `S3`, `FTP`, and `NAS` credential kinds without changing the public asset upload/get/delete routes.
413
+
406
414
  ## More docs
407
415
 
408
416
  ### Core concepts
package/dist/index.d.ts CHANGED
@@ -18,6 +18,8 @@ export * from "./subscription.contract";
18
18
  export * from "./runtime.client";
19
19
  export * from "./utils.contract";
20
20
  export * from "./cache.contract";
21
+ export * from "./storage.credentials.contract";
21
22
  export * from "./prompt-variable-schema.contract";
22
23
  export * from "./registry.stats.contract";
24
+ export { ASSET_TYPE_VALUES, ASSET_TYPE_LABELS, DcdrAssetScope, DcdrAssetMetadata, DcdrAssetMetadataAttributes, DcdrAssetStorageDescriptor, DcdrAssetUploadRequest, DcdrAssetUploadResponse, DcdrAssetGetRequest, DcdrAssetGetResponse, DcdrAssetDeleteRequest, DcdrAssetDeleteResponse, } from "./asset.contract";
23
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mCAAmC,CAAC;AAClD,cAAc,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,2BAA2B,CAAC;AAM1C,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,2BAA2B,EAC3B,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.DcdrAssetScope = exports.ASSET_TYPE_LABELS = exports.ASSET_TYPE_VALUES = void 0;
17
18
  __exportStar(require("./control.contract"), exports);
18
19
  __exportStar(require("./errors.contract"), exports);
19
20
  __exportStar(require("./execution.contract"), exports);
@@ -34,5 +35,14 @@ __exportStar(require("./subscription.contract"), exports);
34
35
  __exportStar(require("./runtime.client"), exports);
35
36
  __exportStar(require("./utils.contract"), exports);
36
37
  __exportStar(require("./cache.contract"), exports);
38
+ __exportStar(require("./storage.credentials.contract"), exports);
37
39
  __exportStar(require("./prompt-variable-schema.contract"), exports);
38
40
  __exportStar(require("./registry.stats.contract"), exports);
41
+ // Asset contract surface — symbols not already re-exported via execution.contract.
42
+ // AssetType, ExecutionAssetDatasource*, ExecutionAssetReference are already in
43
+ // scope through execution.contract; only the managed-asset lifecycle types and
44
+ // the canonical constants are missing from the root barrel.
45
+ var asset_contract_1 = require("./asset.contract");
46
+ Object.defineProperty(exports, "ASSET_TYPE_VALUES", { enumerable: true, get: function () { return asset_contract_1.ASSET_TYPE_VALUES; } });
47
+ Object.defineProperty(exports, "ASSET_TYPE_LABELS", { enumerable: true, get: function () { return asset_contract_1.ASSET_TYPE_LABELS; } });
48
+ Object.defineProperty(exports, "DcdrAssetScope", { enumerable: true, get: function () { return asset_contract_1.DcdrAssetScope; } });
@@ -0,0 +1,90 @@
1
+ import { ExecutionAssetDatasourceType } from "./asset.contract";
2
+ /**
3
+ * Concrete credential payload kinds used by backend-managed asset storages.
4
+ *
5
+ * Notes
6
+ * - This is intentionally separate from `ExecutionAssetDatasourceType`.
7
+ * - `datasourceType` describes the storage family (`S3`, `FTP`, `NAS`).
8
+ * - `kind` describes the exact credential material returned to runtime.
9
+ */
10
+ export declare enum AssetStorageCredentialsKind {
11
+ GOOGLE_CLOUD_SERVICE_ACCOUNT = "GOOGLE_CLOUD_SERVICE_ACCOUNT",
12
+ S3_ACCESS_KEY = "S3_ACCESS_KEY",
13
+ FTP_BASIC = "FTP_BASIC",
14
+ NAS_BASIC = "NAS_BASIC"
15
+ }
16
+ /**
17
+ * Google Cloud service-account credentials used by the current managed-bucket runtime slice.
18
+ */
19
+ export interface AssetStorageGoogleCloudServiceAccountCredentials {
20
+ projectId: string;
21
+ clientEmail: string;
22
+ privateKey: string;
23
+ }
24
+ /**
25
+ * S3-compatible access-key credentials for future object-storage backends.
26
+ */
27
+ export interface AssetStorageS3AccessKeyCredentials {
28
+ accessKeyId: string;
29
+ secretAccessKey: string;
30
+ sessionToken?: string;
31
+ forcePathStyle?: boolean;
32
+ }
33
+ /**
34
+ * FTP credentials for future file-transfer-backed asset storages.
35
+ */
36
+ export interface AssetStorageFtpBasicCredentials {
37
+ host: string;
38
+ port?: number;
39
+ username: string;
40
+ password: string;
41
+ secure?: boolean;
42
+ passive?: boolean;
43
+ }
44
+ /**
45
+ * NAS credentials for future share/path-backed asset storages.
46
+ */
47
+ export interface AssetStorageNasBasicCredentials {
48
+ sharePath: string;
49
+ username?: string;
50
+ password?: string;
51
+ domain?: string;
52
+ }
53
+ /**
54
+ * Backend-resolved credential payload for a managed asset storage datasource.
55
+ *
56
+ * Notes
57
+ * - Keep this additive and secret-bearing: backend/runtime only, never UI-facing.
58
+ * - Optional transport/location hints allow backend to remain source-of-truth for
59
+ * container, endpoint, region, or base-path overrides when they are not fully
60
+ * represented in tenant entitlements.
61
+ */
62
+ export interface AssetStorageCredentialsContract {
63
+ kind: AssetStorageCredentialsKind;
64
+ datasourceType: ExecutionAssetDatasourceType;
65
+ endpoint?: string;
66
+ container?: string;
67
+ region?: string;
68
+ basePath?: string;
69
+ googleCloudServiceAccount?: AssetStorageGoogleCloudServiceAccountCredentials;
70
+ s3AccessKey?: AssetStorageS3AccessKeyCredentials;
71
+ ftpBasic?: AssetStorageFtpBasicCredentials;
72
+ nasBasic?: AssetStorageNasBasicCredentials;
73
+ }
74
+ /**
75
+ * Request sent by runtime to backend to resolve one tenant-visible storage/datasource.
76
+ */
77
+ export interface ResolveAssetStorageCredentialsRequest {
78
+ storageId?: string;
79
+ datasourceId?: string;
80
+ }
81
+ /**
82
+ * Backend response containing the concrete credentials for one tenant storage datasource.
83
+ */
84
+ export interface ResolveAssetStorageCredentialsResponse {
85
+ storageId: string;
86
+ datasourceId: string;
87
+ credentials: AssetStorageCredentialsContract;
88
+ expiresAtMs?: number;
89
+ }
90
+ //# sourceMappingURL=storage.credentials.contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.credentials.contract.d.ts","sourceRoot":"","sources":["../src/storage.credentials.contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAEhE;;;;;;;GAOG;AACH,oBAAY,2BAA2B;IACrC,4BAA4B,iCAAiC;IAC7D,aAAa,kBAAkB;IAC/B,SAAS,cAAc;IACvB,SAAS,cAAc;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gDAAgD;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kCAAkC;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,2BAA2B,CAAC;IAClC,cAAc,EAAE,4BAA4B,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yBAAyB,CAAC,EAAE,gDAAgD,CAAC;IAC7E,WAAW,CAAC,EAAE,kCAAkC,CAAC;IACjD,QAAQ,CAAC,EAAE,+BAA+B,CAAC;IAC3C,QAAQ,CAAC,EAAE,+BAA+B,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,qCAAqC;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,sCAAsC;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,+BAA+B,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AssetStorageCredentialsKind = void 0;
4
+ /**
5
+ * Concrete credential payload kinds used by backend-managed asset storages.
6
+ *
7
+ * Notes
8
+ * - This is intentionally separate from `ExecutionAssetDatasourceType`.
9
+ * - `datasourceType` describes the storage family (`S3`, `FTP`, `NAS`).
10
+ * - `kind` describes the exact credential material returned to runtime.
11
+ */
12
+ var AssetStorageCredentialsKind;
13
+ (function (AssetStorageCredentialsKind) {
14
+ AssetStorageCredentialsKind["GOOGLE_CLOUD_SERVICE_ACCOUNT"] = "GOOGLE_CLOUD_SERVICE_ACCOUNT";
15
+ AssetStorageCredentialsKind["S3_ACCESS_KEY"] = "S3_ACCESS_KEY";
16
+ AssetStorageCredentialsKind["FTP_BASIC"] = "FTP_BASIC";
17
+ AssetStorageCredentialsKind["NAS_BASIC"] = "NAS_BASIC";
18
+ })(AssetStorageCredentialsKind || (exports.AssetStorageCredentialsKind = AssetStorageCredentialsKind = {}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dcdr/contracts",
3
- "version": "2.3.0",
3
+ "version": "2.4.0",
4
4
  "homepage": "https://dcdr.ai",
5
5
  "description": "TypeScript contracts and runtime client for DCDR intent-based AI execution",
6
6
  "private": false,
@@ -48,30 +48,59 @@
48
48
  "node": "22.22.0"
49
49
  },
50
50
  "exports": {
51
- ".": "./dist/index.js",
52
- "./asset.contract": "./dist/asset.contract.js",
53
- "./runtime.client": "./dist/runtime.client.js",
54
- "./cache.contract": "./dist/cache.contract.js",
55
- "./capabilities.contract": "./dist/capabilities.contract.js",
56
- "./control.contract": "./dist/control.contract.js",
57
- "./credentials.contract": "./dist/credentials.contract.js",
58
- "./subscription.contract": "./dist/subscription.contract.js",
59
- "./utils.contract": "./dist/utils.contract.js",
60
- "./prompt-variable-schema.contract": "./dist/prompt-variable-schema.contract.js",
61
- "./registry.stats.contract": "./dist/registry.stats.contract.js",
62
- "./http.contract": "./dist/http.contract.js",
63
- "./entitlements.contract": "./dist/entitlements.contract.js",
64
- "./errors.contract": "./dist/errors.contract.js",
65
- "./execution.contract": "./dist/execution.contract.js",
66
- "./implementations.contract": "./dist/implementations.contract.js",
67
- "./intent.contract": "./dist/intent.contract.js",
68
- "./logs.contract": "./dist/logs.contract.js",
69
- "./messages.contract": "./dist/messages.contract.js",
70
- "./policies.contract": "./dist/policies.contract.js",
71
- "./prompts.contract": "./dist/prompts.contract.js",
72
- "./provider.contract": "./dist/provider.contract.js",
73
- "./service-tokens.contract": "./dist/service-tokens.contract.js",
74
- "./session.contract": "./dist/session.contract.js"
51
+ ".": { "types": "./dist/index.d.ts", "default": "./dist/index.js" },
52
+ "./asset.contract": { "types": "./dist/asset.contract.d.ts", "default": "./dist/asset.contract.js" },
53
+ "./storage.credentials.contract": { "types": "./dist/storage.credentials.contract.d.ts", "default": "./dist/storage.credentials.contract.js" },
54
+ "./runtime.client": { "types": "./dist/runtime.client.d.ts", "default": "./dist/runtime.client.js" },
55
+ "./cache.contract": { "types": "./dist/cache.contract.d.ts", "default": "./dist/cache.contract.js" },
56
+ "./capabilities.contract": { "types": "./dist/capabilities.contract.d.ts", "default": "./dist/capabilities.contract.js" },
57
+ "./control.contract": { "types": "./dist/control.contract.d.ts", "default": "./dist/control.contract.js" },
58
+ "./credentials.contract": { "types": "./dist/credentials.contract.d.ts", "default": "./dist/credentials.contract.js" },
59
+ "./subscription.contract": { "types": "./dist/subscription.contract.d.ts", "default": "./dist/subscription.contract.js" },
60
+ "./utils.contract": { "types": "./dist/utils.contract.d.ts", "default": "./dist/utils.contract.js" },
61
+ "./prompt-variable-schema.contract": { "types": "./dist/prompt-variable-schema.contract.d.ts", "default": "./dist/prompt-variable-schema.contract.js" },
62
+ "./registry.stats.contract": { "types": "./dist/registry.stats.contract.d.ts", "default": "./dist/registry.stats.contract.js" },
63
+ "./http.contract": { "types": "./dist/http.contract.d.ts", "default": "./dist/http.contract.js" },
64
+ "./entitlements.contract": { "types": "./dist/entitlements.contract.d.ts", "default": "./dist/entitlements.contract.js" },
65
+ "./errors.contract": { "types": "./dist/errors.contract.d.ts", "default": "./dist/errors.contract.js" },
66
+ "./execution.contract": { "types": "./dist/execution.contract.d.ts", "default": "./dist/execution.contract.js" },
67
+ "./implementations.contract": { "types": "./dist/implementations.contract.d.ts", "default": "./dist/implementations.contract.js" },
68
+ "./intent.contract": { "types": "./dist/intent.contract.d.ts", "default": "./dist/intent.contract.js" },
69
+ "./logs.contract": { "types": "./dist/logs.contract.d.ts", "default": "./dist/logs.contract.js" },
70
+ "./messages.contract": { "types": "./dist/messages.contract.d.ts", "default": "./dist/messages.contract.js" },
71
+ "./policies.contract": { "types": "./dist/policies.contract.d.ts", "default": "./dist/policies.contract.js" },
72
+ "./prompts.contract": { "types": "./dist/prompts.contract.d.ts", "default": "./dist/prompts.contract.js" },
73
+ "./provider.contract": { "types": "./dist/provider.contract.d.ts", "default": "./dist/provider.contract.js" },
74
+ "./service-tokens.contract": { "types": "./dist/service-tokens.contract.d.ts", "default": "./dist/service-tokens.contract.js" },
75
+ "./session.contract": { "types": "./dist/session.contract.d.ts", "default": "./dist/session.contract.js" }
76
+ },
77
+ "typesVersions": {
78
+ "*": {
79
+ "asset.contract": ["dist/asset.contract.d.ts"],
80
+ "storage.credentials.contract": ["dist/storage.credentials.contract.d.ts"],
81
+ "runtime.client": ["dist/runtime.client.d.ts"],
82
+ "cache.contract": ["dist/cache.contract.d.ts"],
83
+ "capabilities.contract": ["dist/capabilities.contract.d.ts"],
84
+ "control.contract": ["dist/control.contract.d.ts"],
85
+ "credentials.contract": ["dist/credentials.contract.d.ts"],
86
+ "subscription.contract": ["dist/subscription.contract.d.ts"],
87
+ "utils.contract": ["dist/utils.contract.d.ts"],
88
+ "prompt-variable-schema.contract": ["dist/prompt-variable-schema.contract.d.ts"],
89
+ "registry.stats.contract": ["dist/registry.stats.contract.d.ts"],
90
+ "http.contract": ["dist/http.contract.d.ts"],
91
+ "entitlements.contract": ["dist/entitlements.contract.d.ts"],
92
+ "errors.contract": ["dist/errors.contract.d.ts"],
93
+ "execution.contract": ["dist/execution.contract.d.ts"],
94
+ "implementations.contract": ["dist/implementations.contract.d.ts"],
95
+ "intent.contract": ["dist/intent.contract.d.ts"],
96
+ "logs.contract": ["dist/logs.contract.d.ts"],
97
+ "messages.contract": ["dist/messages.contract.d.ts"],
98
+ "policies.contract": ["dist/policies.contract.d.ts"],
99
+ "prompts.contract": ["dist/prompts.contract.d.ts"],
100
+ "provider.contract": ["dist/provider.contract.d.ts"],
101
+ "service-tokens.contract": ["dist/service-tokens.contract.d.ts"],
102
+ "session.contract": ["dist/session.contract.d.ts"]
103
+ }
75
104
  },
76
105
  "dependencies": {
77
106
  "class-validator": "^0.15.1"