@sensigo/realm 0.12.1 → 0.14.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/dist/engine/execution-loop.d.ts +0 -4
- package/dist/engine/execution-loop.d.ts.map +1 -1
- package/dist/engine/execution-loop.js +58 -7
- package/dist/engine/execution-loop.js.map +1 -1
- package/dist/extensions/default-registry.d.ts +6 -13
- package/dist/extensions/default-registry.d.ts.map +1 -1
- package/dist/extensions/default-registry.js +13 -20
- package/dist/extensions/default-registry.js.map +1 -1
- package/dist/extensions/manifest.d.ts +26 -0
- package/dist/extensions/manifest.d.ts.map +1 -0
- package/dist/extensions/manifest.js +7 -0
- package/dist/extensions/manifest.js.map +1 -0
- package/dist/extensions/registry.d.ts +14 -0
- package/dist/extensions/registry.d.ts.map +1 -1
- package/dist/extensions/registry.js +32 -0
- package/dist/extensions/registry.js.map +1 -1
- package/dist/index.d.ts +9 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/manifest/deployment-manifest.d.ts +197 -0
- package/dist/manifest/deployment-manifest.d.ts.map +1 -0
- package/dist/manifest/deployment-manifest.js +174 -0
- package/dist/manifest/deployment-manifest.js.map +1 -0
- package/dist/manifest/secret-refs.d.ts +44 -0
- package/dist/manifest/secret-refs.d.ts.map +1 -0
- package/dist/manifest/secret-refs.js +126 -0
- package/dist/manifest/secret-refs.js.map +1 -0
- package/dist/types/extension-identity.d.ts +74 -0
- package/dist/types/extension-identity.d.ts.map +1 -0
- package/dist/types/extension-identity.js +28 -0
- package/dist/types/extension-identity.js.map +1 -0
- package/dist/types/run-record.d.ts +9 -0
- package/dist/types/run-record.d.ts.map +1 -1
- package/dist/types/workflow-definition.d.ts +23 -3
- package/dist/types/workflow-definition.d.ts.map +1 -1
- package/dist/workflow/yaml-loader.d.ts +2 -0
- package/dist/workflow/yaml-loader.d.ts.map +1 -1
- package/dist/workflow/yaml-loader.js +123 -3
- package/dist/workflow/yaml-loader.js.map +1 -1
- package/package.json +1 -1
- package/dist/config/secrets.d.ts +0 -15
- package/dist/config/secrets.d.ts.map +0 -1
- package/dist/config/secrets.js +0 -33
- package/dist/config/secrets.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -23,18 +23,26 @@ export { TERMINAL_PHASES, RESUMABLE_PHASES, WAITING_PHASES, isTerminalPhase, TER
|
|
|
23
23
|
export { evaluatePrecondition, checkPreconditions, evaluateAllPreconditions, } from './engine/precondition.js';
|
|
24
24
|
export type { PreconditionResult } from './engine/precondition.js';
|
|
25
25
|
export type { StepDiagnostics } from './types/run-record.js';
|
|
26
|
-
export declare const VERSION = "0.
|
|
26
|
+
export declare const VERSION = "0.14.0";
|
|
27
27
|
export type { ToolCallRecord, McpServerConfig } from './types/mcp-types.js';
|
|
28
28
|
export type { ServiceAdapter, ServiceResponse } from './extensions/service-adapter.js';
|
|
29
29
|
export type { StepHandler, StepHandlerInputs, StepContext, StepHandlerResult, } from './extensions/step-handler.js';
|
|
30
30
|
export type { Processor, ProcessorInput, ProcessorOutput } from './extensions/processor.js';
|
|
31
31
|
export { ExtensionRegistry } from './extensions/registry.js';
|
|
32
32
|
export { createDefaultRegistry } from './extensions/default-registry.js';
|
|
33
|
+
export type { ExtensionManifest, ExtensionModuleRef } from './extensions/manifest.js';
|
|
34
|
+
export { validateDeploymentManifest, collectManifestSecretRefs, DEPLOYMENT_MANIFEST_JSON_SCHEMA, } from './manifest/deployment-manifest.js';
|
|
35
|
+
export type { DeploymentManifest, ManifestEntry, ManifestSecretsConfig, SlackGateNotifierConfig, ExtensionFactory, ExtensionFactoryContext, } from './manifest/deployment-manifest.js';
|
|
36
|
+
export { scanSecretString, stringHasSecretRefs, interpolateSecretString, interpolateConfigTree, findSecretRefSites, } from './manifest/secret-refs.js';
|
|
37
|
+
export type { SecretRefSite, SecretScanResult } from './manifest/secret-refs.js';
|
|
38
|
+
export type { ExtensionIdentityEntry, ExtensionIdentityModule, ExtensionIdentityTree, ExtensionIdentitySignals, } from './types/extension-identity.js';
|
|
39
|
+
export { extensionIdentityDiffers } from './types/extension-identity.js';
|
|
33
40
|
export { captureEvidence } from './evidence/snapshot.js';
|
|
34
41
|
export type { CaptureEvidenceParams } from './evidence/snapshot.js';
|
|
35
42
|
export { GenericHttpAdapter } from './adapters/http-adapter.js';
|
|
36
43
|
export type { HttpAdapterConfig } from './adapters/http-adapter.js';
|
|
37
44
|
export { FileSystemAdapter } from './adapters/file-adapter.js';
|
|
45
|
+
export { MockAdapter } from './adapters/mock-adapter.js';
|
|
38
46
|
export { GitHubAdapter } from './adapters/github-adapter.js';
|
|
39
47
|
export type { GitHubAdapterConfig } from './adapters/github-adapter.js';
|
|
40
48
|
export { SlackAdapter } from './adapters/slack-adapter.js';
|
|
@@ -52,7 +60,6 @@ export type { NotionAdapterConfig } from './adapters/notion-adapter.js';
|
|
|
52
60
|
export { TRACE_POLICY_VERSION, TRACE_POLICY, TRACE_POLICY_HASH } from './engine/trace-policy.js';
|
|
53
61
|
export type { TracePolicyDescriptor, TracePolicyVersion } from './engine/trace-policy.js';
|
|
54
62
|
export { validateInputSchema } from './validation/input-schema.js';
|
|
55
|
-
export { loadSecrets, resolveSecret } from './config/secrets.js';
|
|
56
63
|
export { loadWorkflowFromFile, loadWorkflowFromString, CURRENT_WORKFLOW_SCHEMA_VERSION, } from './workflow/yaml-loader.js';
|
|
57
64
|
export { JsonWorkflowStore } from './workflow/registrar.js';
|
|
58
65
|
export type { WorkflowRegistrar } from './workflow/registrar.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -16,14 +16,18 @@ export { submitHumanResponse, executeChain, buildNextActions, buildPreExecutionE
|
|
|
16
16
|
export { findEligibleSteps, isWorkflowComplete, deriveRunPhase, buildEvidenceByStep, propagateSkips, } from './engine/eligibility.js';
|
|
17
17
|
export { TERMINAL_PHASES, RESUMABLE_PHASES, WAITING_PHASES, isTerminalPhase, TERMINAL_STATES, RESUMABLE_STATES, WAITING_STATES, isTerminalState, } from './engine/lifecycle.js';
|
|
18
18
|
export { evaluatePrecondition, checkPreconditions, evaluateAllPreconditions, } from './engine/precondition.js';
|
|
19
|
-
export const VERSION = '0.
|
|
19
|
+
export const VERSION = '0.14.0';
|
|
20
20
|
export { ExtensionRegistry } from './extensions/registry.js';
|
|
21
21
|
export { createDefaultRegistry } from './extensions/default-registry.js';
|
|
22
|
+
export { validateDeploymentManifest, collectManifestSecretRefs, DEPLOYMENT_MANIFEST_JSON_SCHEMA, } from './manifest/deployment-manifest.js';
|
|
23
|
+
export { scanSecretString, stringHasSecretRefs, interpolateSecretString, interpolateConfigTree, findSecretRefSites, } from './manifest/secret-refs.js';
|
|
24
|
+
export { extensionIdentityDiffers } from './types/extension-identity.js';
|
|
22
25
|
// Evidence
|
|
23
26
|
export { captureEvidence } from './evidence/snapshot.js';
|
|
24
27
|
// Adapters
|
|
25
28
|
export { GenericHttpAdapter } from './adapters/http-adapter.js';
|
|
26
29
|
export { FileSystemAdapter } from './adapters/file-adapter.js';
|
|
30
|
+
export { MockAdapter } from './adapters/mock-adapter.js';
|
|
27
31
|
export { GitHubAdapter } from './adapters/github-adapter.js';
|
|
28
32
|
export { SlackAdapter } from './adapters/slack-adapter.js';
|
|
29
33
|
export { GorgiasAdapter } from './adapters/gorgias-adapter.js';
|
|
@@ -35,8 +39,6 @@ export { NotionAdapter } from './adapters/notion-adapter.js';
|
|
|
35
39
|
export { TRACE_POLICY_VERSION, TRACE_POLICY, TRACE_POLICY_HASH } from './engine/trace-policy.js';
|
|
36
40
|
// Validation
|
|
37
41
|
export { validateInputSchema } from './validation/input-schema.js';
|
|
38
|
-
// Config
|
|
39
|
-
export { loadSecrets, resolveSecret } from './config/secrets.js';
|
|
40
42
|
// Workflow
|
|
41
43
|
export { loadWorkflowFromFile, loadWorkflowFromString, CURRENT_WORKFLOW_SCHEMA_VERSION, } from './workflow/yaml-loader.js';
|
|
42
44
|
export { JsonWorkflowStore } from './workflow/registrar.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAC9E,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EACL,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,0CAA0C,CAAC;AAMlD,OAAO,EACL,kBAAkB,EAClB,gCAAgC,GACjC,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,8BAA8B,GAC/B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,cAAc,GACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAGlC,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAYhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,WAAW;AACX,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,WAAW;AACX,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAMvE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAG7D,eAAe;AACf,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGjG,aAAa;AACb,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/** One adapter/handler/processor entry, keyed by REGISTRATION name in the manifest maps. */
|
|
2
|
+
export interface ManifestEntry {
|
|
3
|
+
/**
|
|
4
|
+
* What constructs the instance: a built-in catalog name (e.g. `github`), or a module
|
|
5
|
+
* reference `./path.js#ExportName` resolved against the MANIFEST file's directory
|
|
6
|
+
* (`#ExportName` optional — default export otherwise). Contains `/` or a file
|
|
7
|
+
* extension → module ref; else catalog name. Handlers/processors have no catalog —
|
|
8
|
+
* module refs only. Omitted `use:` is invalid for adapters and handlers/processors
|
|
9
|
+
* alike (there is nothing to construct).
|
|
10
|
+
*/
|
|
11
|
+
use?: string;
|
|
12
|
+
/** Construction config; `${secret:NAME}` references are legal only inside its strings. */
|
|
13
|
+
config?: Record<string, unknown>;
|
|
14
|
+
}
|
|
15
|
+
/** Slack gate-notifier config — the reborn checkSlackBidirectionalConfig semantics. */
|
|
16
|
+
export interface SlackGateNotifierConfig {
|
|
17
|
+
type: 'slack';
|
|
18
|
+
config: {
|
|
19
|
+
webhook_url?: string;
|
|
20
|
+
bot_token?: string;
|
|
21
|
+
channel_id?: string;
|
|
22
|
+
app_token?: string;
|
|
23
|
+
signing_secret?: string;
|
|
24
|
+
events_port?: number;
|
|
25
|
+
reminder_interval_ms?: number;
|
|
26
|
+
escalation_threshold_ms?: number;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export interface ManifestSecretsConfig {
|
|
30
|
+
/** Secret sources in PRECEDENCE order. Default: ['dotenv']. `env` is opt-in. */
|
|
31
|
+
sources?: Array<'dotenv' | 'env'>;
|
|
32
|
+
/** dotenv file path, relative to the manifest file. Default: `<root>/.env`. */
|
|
33
|
+
dotenv?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface DeploymentManifest {
|
|
36
|
+
version: 1;
|
|
37
|
+
secrets?: ManifestSecretsConfig;
|
|
38
|
+
adapters?: Record<string, ManifestEntry>;
|
|
39
|
+
handlers?: Record<string, ManifestEntry>;
|
|
40
|
+
processors?: Record<string, ManifestEntry>;
|
|
41
|
+
notifiers?: {
|
|
42
|
+
slack_gate?: SlackGateNotifierConfig;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The ONE construction shape for `use:` module refs AND catalog wrappers: a factory
|
|
47
|
+
* receiving the registration id and the secret-RESOLVED config, returning the instance.
|
|
48
|
+
*/
|
|
49
|
+
export interface ExtensionFactoryContext {
|
|
50
|
+
id: string;
|
|
51
|
+
config: Record<string, unknown>;
|
|
52
|
+
}
|
|
53
|
+
export type ExtensionFactory<T = unknown> = (ctx: ExtensionFactoryContext) => T;
|
|
54
|
+
/** Ajv-strict JSON schema for the deployment manifest document. */
|
|
55
|
+
export declare const DEPLOYMENT_MANIFEST_JSON_SCHEMA: {
|
|
56
|
+
type: string;
|
|
57
|
+
additionalProperties: boolean;
|
|
58
|
+
required: string[];
|
|
59
|
+
properties: {
|
|
60
|
+
version: {
|
|
61
|
+
const: number;
|
|
62
|
+
};
|
|
63
|
+
secrets: {
|
|
64
|
+
type: string;
|
|
65
|
+
additionalProperties: boolean;
|
|
66
|
+
properties: {
|
|
67
|
+
sources: {
|
|
68
|
+
type: string;
|
|
69
|
+
minItems: number;
|
|
70
|
+
items: {
|
|
71
|
+
enum: string[];
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
dotenv: {
|
|
75
|
+
type: string;
|
|
76
|
+
minLength: number;
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
adapters: {
|
|
81
|
+
readonly type: "object";
|
|
82
|
+
readonly additionalProperties: {
|
|
83
|
+
readonly type: "object";
|
|
84
|
+
readonly additionalProperties: false;
|
|
85
|
+
readonly properties: {
|
|
86
|
+
readonly use: {
|
|
87
|
+
readonly type: "string";
|
|
88
|
+
readonly minLength: 1;
|
|
89
|
+
};
|
|
90
|
+
readonly config: {
|
|
91
|
+
readonly type: "object";
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
};
|
|
96
|
+
handlers: {
|
|
97
|
+
readonly type: "object";
|
|
98
|
+
readonly additionalProperties: {
|
|
99
|
+
readonly type: "object";
|
|
100
|
+
readonly additionalProperties: false;
|
|
101
|
+
readonly properties: {
|
|
102
|
+
readonly use: {
|
|
103
|
+
readonly type: "string";
|
|
104
|
+
readonly minLength: 1;
|
|
105
|
+
};
|
|
106
|
+
readonly config: {
|
|
107
|
+
readonly type: "object";
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
processors: {
|
|
113
|
+
readonly type: "object";
|
|
114
|
+
readonly additionalProperties: {
|
|
115
|
+
readonly type: "object";
|
|
116
|
+
readonly additionalProperties: false;
|
|
117
|
+
readonly properties: {
|
|
118
|
+
readonly use: {
|
|
119
|
+
readonly type: "string";
|
|
120
|
+
readonly minLength: 1;
|
|
121
|
+
};
|
|
122
|
+
readonly config: {
|
|
123
|
+
readonly type: "object";
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
};
|
|
128
|
+
notifiers: {
|
|
129
|
+
type: string;
|
|
130
|
+
additionalProperties: boolean;
|
|
131
|
+
properties: {
|
|
132
|
+
slack_gate: {
|
|
133
|
+
type: string;
|
|
134
|
+
additionalProperties: boolean;
|
|
135
|
+
required: string[];
|
|
136
|
+
properties: {
|
|
137
|
+
type: {
|
|
138
|
+
const: string;
|
|
139
|
+
};
|
|
140
|
+
config: {
|
|
141
|
+
type: string;
|
|
142
|
+
additionalProperties: boolean;
|
|
143
|
+
properties: {
|
|
144
|
+
webhook_url: {
|
|
145
|
+
type: string;
|
|
146
|
+
minLength: number;
|
|
147
|
+
};
|
|
148
|
+
bot_token: {
|
|
149
|
+
type: string;
|
|
150
|
+
minLength: number;
|
|
151
|
+
};
|
|
152
|
+
channel_id: {
|
|
153
|
+
type: string;
|
|
154
|
+
minLength: number;
|
|
155
|
+
};
|
|
156
|
+
app_token: {
|
|
157
|
+
type: string;
|
|
158
|
+
minLength: number;
|
|
159
|
+
};
|
|
160
|
+
signing_secret: {
|
|
161
|
+
type: string;
|
|
162
|
+
minLength: number;
|
|
163
|
+
};
|
|
164
|
+
events_port: {
|
|
165
|
+
type: string;
|
|
166
|
+
minimum: number;
|
|
167
|
+
maximum: number;
|
|
168
|
+
};
|
|
169
|
+
reminder_interval_ms: {
|
|
170
|
+
type: string;
|
|
171
|
+
minimum: number;
|
|
172
|
+
};
|
|
173
|
+
escalation_threshold_ms: {
|
|
174
|
+
type: string;
|
|
175
|
+
minimum: number;
|
|
176
|
+
};
|
|
177
|
+
};
|
|
178
|
+
};
|
|
179
|
+
};
|
|
180
|
+
};
|
|
181
|
+
};
|
|
182
|
+
};
|
|
183
|
+
};
|
|
184
|
+
};
|
|
185
|
+
/**
|
|
186
|
+
* Pure structural + semantic validation of a parsed manifest document.
|
|
187
|
+
* Returns actionable error strings (empty = valid). Empty maps and absent sections are
|
|
188
|
+
* valid. Duplicate-name detection across manifest entries and code-module exports is
|
|
189
|
+
* loader-side (post-resolution) — one namespace, one collision map.
|
|
190
|
+
*/
|
|
191
|
+
export declare function validateDeploymentManifest(raw: unknown): string[];
|
|
192
|
+
/** Collects every well-formed secret reference site across all config trees. */
|
|
193
|
+
export declare function collectManifestSecretRefs(manifest: DeploymentManifest): Array<{
|
|
194
|
+
name: string;
|
|
195
|
+
path: string;
|
|
196
|
+
}>;
|
|
197
|
+
//# sourceMappingURL=deployment-manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment-manifest.d.ts","sourceRoot":"","sources":["../../src/manifest/deployment-manifest.ts"],"names":[],"mappings":"AAWA,4FAA4F;AAC5F,MAAM,WAAW,aAAa;IAC5B;;;;;;;OAOG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0FAA0F;IAC1F,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,uFAAuF;AACvF,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,uBAAuB,CAAC,EAAE,MAAM,CAAC;KAClC,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,gFAAgF;IAChF,OAAO,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;IAClC,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC3C,SAAS,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,uBAAuB,CAAA;KAAE,CAAC;CACtD;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AACD,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,uBAAuB,KAAK,CAAC,CAAC;AAgBhF,mEAAmE;AACnE,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkD3C,CAAC;AAWF;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAuCjE;AA0DD,gFAAgF;AAChF,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,kBAAkB,GAC3B,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBvC"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
// Deployment manifest (`<deployment root>/realm.yaml`, v0.14) — types, Ajv-STRICT schema,
|
|
2
|
+
// and the pure validate function (precedent: trigger-schema.ts). The manifest is the single
|
|
3
|
+
// home of ALL deployment configuration: adapter construction (built-in catalog + custom
|
|
4
|
+
// factories), handler/processor construction config, secret bindings (`${secret:NAME}`),
|
|
5
|
+
// and gate-notifier config. Core owns SHAPE validation only — the CLI owns fs/parse/
|
|
6
|
+
// resolve/construct. Workflows keep declaring CODE via `extensions:`; the manifest owns
|
|
7
|
+
// CONFIG. Trust model: manifest-write = credential-redirection = code-write-equivalent.
|
|
8
|
+
import { Ajv } from 'ajv';
|
|
9
|
+
import { findSecretRefSites } from './secret-refs.js';
|
|
10
|
+
const ENTRY_SCHEMA = {
|
|
11
|
+
type: 'object',
|
|
12
|
+
additionalProperties: false,
|
|
13
|
+
properties: {
|
|
14
|
+
use: { type: 'string', minLength: 1 },
|
|
15
|
+
config: { type: 'object' },
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
const ENTRY_MAP_SCHEMA = {
|
|
19
|
+
type: 'object',
|
|
20
|
+
additionalProperties: ENTRY_SCHEMA,
|
|
21
|
+
};
|
|
22
|
+
/** Ajv-strict JSON schema for the deployment manifest document. */
|
|
23
|
+
export const DEPLOYMENT_MANIFEST_JSON_SCHEMA = {
|
|
24
|
+
type: 'object',
|
|
25
|
+
additionalProperties: false,
|
|
26
|
+
required: ['version'],
|
|
27
|
+
properties: {
|
|
28
|
+
version: { const: 1 },
|
|
29
|
+
secrets: {
|
|
30
|
+
type: 'object',
|
|
31
|
+
additionalProperties: false,
|
|
32
|
+
properties: {
|
|
33
|
+
sources: {
|
|
34
|
+
type: 'array',
|
|
35
|
+
minItems: 1,
|
|
36
|
+
items: { enum: ['dotenv', 'env'] },
|
|
37
|
+
},
|
|
38
|
+
dotenv: { type: 'string', minLength: 1 },
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
adapters: ENTRY_MAP_SCHEMA,
|
|
42
|
+
handlers: ENTRY_MAP_SCHEMA,
|
|
43
|
+
processors: ENTRY_MAP_SCHEMA,
|
|
44
|
+
notifiers: {
|
|
45
|
+
type: 'object',
|
|
46
|
+
additionalProperties: false,
|
|
47
|
+
properties: {
|
|
48
|
+
slack_gate: {
|
|
49
|
+
type: 'object',
|
|
50
|
+
additionalProperties: false,
|
|
51
|
+
required: ['type', 'config'],
|
|
52
|
+
properties: {
|
|
53
|
+
type: { const: 'slack' },
|
|
54
|
+
config: {
|
|
55
|
+
type: 'object',
|
|
56
|
+
additionalProperties: false,
|
|
57
|
+
properties: {
|
|
58
|
+
webhook_url: { type: 'string', minLength: 1 },
|
|
59
|
+
bot_token: { type: 'string', minLength: 1 },
|
|
60
|
+
channel_id: { type: 'string', minLength: 1 },
|
|
61
|
+
app_token: { type: 'string', minLength: 1 },
|
|
62
|
+
signing_secret: { type: 'string', minLength: 1 },
|
|
63
|
+
events_port: { type: 'integer', minimum: 1, maximum: 65535 },
|
|
64
|
+
reminder_interval_ms: { type: 'integer', minimum: 1 },
|
|
65
|
+
escalation_threshold_ms: { type: 'integer', minimum: 1 },
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
function formatAjvError(err) {
|
|
75
|
+
const where = err.instancePath === '' ? 'manifest' : `manifest${err.instancePath}`;
|
|
76
|
+
const detail = err.keyword === 'additionalProperties'
|
|
77
|
+
? `unknown key '${String(err.params.additionalProperty)}'`
|
|
78
|
+
: (err.message ?? 'invalid');
|
|
79
|
+
return `${where}: ${detail}`;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Pure structural + semantic validation of a parsed manifest document.
|
|
83
|
+
* Returns actionable error strings (empty = valid). Empty maps and absent sections are
|
|
84
|
+
* valid. Duplicate-name detection across manifest entries and code-module exports is
|
|
85
|
+
* loader-side (post-resolution) — one namespace, one collision map.
|
|
86
|
+
*/
|
|
87
|
+
export function validateDeploymentManifest(raw) {
|
|
88
|
+
const errors = [];
|
|
89
|
+
const ajv = new Ajv({ strict: true, allErrors: true });
|
|
90
|
+
if (!ajv.validate(DEPLOYMENT_MANIFEST_JSON_SCHEMA, raw)) {
|
|
91
|
+
for (const err of ajv.errors ?? [])
|
|
92
|
+
errors.push(formatAjvError(err));
|
|
93
|
+
return errors;
|
|
94
|
+
}
|
|
95
|
+
const manifest = raw;
|
|
96
|
+
// Notifier combo validation (the reborn checkSlackBidirectionalConfig, as hard schema):
|
|
97
|
+
const slack = manifest.notifiers?.slack_gate?.config;
|
|
98
|
+
if (slack !== undefined) {
|
|
99
|
+
if (slack.app_token !== undefined && slack.bot_token === undefined) {
|
|
100
|
+
errors.push(`notifiers.slack_gate: 'app_token' (Socket Mode) requires 'bot_token' — Socket Mode replies are posted via the bot token.`);
|
|
101
|
+
}
|
|
102
|
+
if (slack.signing_secret !== undefined && slack.events_port === undefined) {
|
|
103
|
+
errors.push(`notifiers.slack_gate: 'signing_secret' (Events API) requires 'events_port' — the events listener needs a port to bind.`);
|
|
104
|
+
}
|
|
105
|
+
if (slack.events_port !== undefined && slack.signing_secret === undefined) {
|
|
106
|
+
errors.push(`notifiers.slack_gate: 'events_port' requires 'signing_secret' — an events listener without request verification is not allowed.`);
|
|
107
|
+
}
|
|
108
|
+
if (slack.app_token !== undefined && slack.signing_secret !== undefined) {
|
|
109
|
+
errors.push(`notifiers.slack_gate: 'app_token' and 'signing_secret' are mutually exclusive — Socket Mode and the Events API are alternative reply channels; configure one.`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// `${secret:NAME}` placement: legal ONLY inside string values under `config` trees.
|
|
113
|
+
// Also reject malformed reference-like fragments anywhere (typos never pass silently).
|
|
114
|
+
errors.push(...checkSecretRefPlacement(manifest));
|
|
115
|
+
return errors;
|
|
116
|
+
}
|
|
117
|
+
/** Sections whose `config` subtree is the ONLY legal home for secret references. */
|
|
118
|
+
function checkSecretRefPlacement(manifest) {
|
|
119
|
+
const errors = [];
|
|
120
|
+
const checkEntryMap = (section, map) => {
|
|
121
|
+
for (const [name, entry] of Object.entries(map ?? {})) {
|
|
122
|
+
// use: must not carry secret refs (it names code, not config).
|
|
123
|
+
if (entry.use !== undefined) {
|
|
124
|
+
const scan = findSecretRefSites(entry.use, `${section}.${name}.use`);
|
|
125
|
+
for (const site of scan.sites) {
|
|
126
|
+
errors.push(`${site.path}: '\${secret:${site.name}}' is not allowed here — secret references are legal only inside string values under 'config'.`);
|
|
127
|
+
}
|
|
128
|
+
for (const bad of scan.malformed) {
|
|
129
|
+
errors.push(`${bad.path}: malformed secret reference '${bad.fragment}'.`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
const scan = findSecretRefSites(entry.config, `${section}.${name}.config`);
|
|
133
|
+
for (const bad of scan.malformed) {
|
|
134
|
+
errors.push(`${bad.path}: malformed secret reference '${bad.fragment}' — the form is \${secret:NAME} with NAME = [A-Z0-9_]+.`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
checkEntryMap('adapters', manifest.adapters);
|
|
139
|
+
checkEntryMap('handlers', manifest.handlers);
|
|
140
|
+
checkEntryMap('processors', manifest.processors);
|
|
141
|
+
const slackConfig = manifest.notifiers?.slack_gate?.config;
|
|
142
|
+
if (slackConfig !== undefined) {
|
|
143
|
+
const scan = findSecretRefSites(slackConfig, 'notifiers.slack_gate.config');
|
|
144
|
+
for (const bad of scan.malformed) {
|
|
145
|
+
errors.push(`${bad.path}: malformed secret reference '${bad.fragment}' — the form is \${secret:NAME} with NAME = [A-Z0-9_]+.`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// secrets.dotenv must not carry refs (it locates the source, it cannot use one).
|
|
149
|
+
if (manifest.secrets?.dotenv !== undefined) {
|
|
150
|
+
const scan = findSecretRefSites(manifest.secrets.dotenv, 'secrets.dotenv');
|
|
151
|
+
for (const site of scan.sites) {
|
|
152
|
+
errors.push(`${site.path}: '\${secret:${site.name}}' is not allowed here — secret references are legal only inside string values under 'config'.`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return errors;
|
|
156
|
+
}
|
|
157
|
+
/** Collects every well-formed secret reference site across all config trees. */
|
|
158
|
+
export function collectManifestSecretRefs(manifest) {
|
|
159
|
+
const sites = [];
|
|
160
|
+
const fromMap = (section, map) => {
|
|
161
|
+
for (const [name, entry] of Object.entries(map ?? {})) {
|
|
162
|
+
sites.push(...findSecretRefSites(entry.config, `${section}.${name}.config`).sites);
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
fromMap('adapters', manifest.adapters);
|
|
166
|
+
fromMap('handlers', manifest.handlers);
|
|
167
|
+
fromMap('processors', manifest.processors);
|
|
168
|
+
const slack = manifest.notifiers?.slack_gate?.config;
|
|
169
|
+
if (slack !== undefined) {
|
|
170
|
+
sites.push(...findSecretRefSites(slack, 'notifiers.slack_gate.config').sites);
|
|
171
|
+
}
|
|
172
|
+
return sites;
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=deployment-manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment-manifest.js","sourceRoot":"","sources":["../../src/manifest/deployment-manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/** Result of scanning one string value for secret references. */
|
|
2
|
+
export interface SecretScanResult {
|
|
3
|
+
/** Referenced secret NAMEs, in order of appearance (duplicates preserved). */
|
|
4
|
+
refs: string[];
|
|
5
|
+
/** Malformed `${secret:...}`-like fragments (bad charset, unterminated). */
|
|
6
|
+
malformed: string[];
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Scans a string left-to-right honoring the `$$` escape. Well-formed references are
|
|
10
|
+
* collected; anything starting like a reference but not matching the grammar is malformed.
|
|
11
|
+
*/
|
|
12
|
+
export declare function scanSecretString(value: string): SecretScanResult;
|
|
13
|
+
/** True when the string contains at least one well-formed secret reference. */
|
|
14
|
+
export declare function stringHasSecretRefs(value: string): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Interpolates a string: well-formed references are replaced via `resolve(name)`,
|
|
17
|
+
* `$$` becomes a literal `$`. The caller guarantees every referenced name resolves
|
|
18
|
+
* (the CLI aggregates unresolved references into one loud error BEFORE interpolating).
|
|
19
|
+
*/
|
|
20
|
+
export declare function interpolateSecretString(value: string, resolve: (name: string) => string): string;
|
|
21
|
+
/** One secret reference found in a config tree, with its binding site for error messages. */
|
|
22
|
+
export interface SecretRefSite {
|
|
23
|
+
/** Referenced secret NAME. */
|
|
24
|
+
name: string;
|
|
25
|
+
/** Dot-path binding site, e.g. `adapters.github.config.auth.token`. */
|
|
26
|
+
path: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Walks a config tree (objects/arrays/strings) collecting every well-formed secret
|
|
30
|
+
* reference with its binding site. Malformed fragments are collected separately.
|
|
31
|
+
*/
|
|
32
|
+
export declare function findSecretRefSites(node: unknown, basePath: string): {
|
|
33
|
+
sites: SecretRefSite[];
|
|
34
|
+
malformed: Array<{
|
|
35
|
+
path: string;
|
|
36
|
+
fragment: string;
|
|
37
|
+
}>;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Interpolates every string inside a config tree, returning a deep copy.
|
|
41
|
+
* Non-string leaves pass through untouched.
|
|
42
|
+
*/
|
|
43
|
+
export declare function interpolateConfigTree<T>(node: T, resolve: (name: string) => string): T;
|
|
44
|
+
//# sourceMappingURL=secret-refs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-refs.d.ts","sourceRoot":"","sources":["../../src/manifest/secret-refs.ts"],"names":[],"mappings":"AAeA,iEAAiE;AACjE,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,4EAA4E;IAC5E,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CA4BhE;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAqBhG;AAED,6FAA6F;AAC7F,MAAM,WAAW,aAAa;IAC5B,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,MAAM,GACf;IAAE,KAAK,EAAE,aAAa,EAAE,CAAC;IAAC,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAoBlF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,CAAC,CAetF"}
|