@flowdesk/core 0.1.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/agent-profiles.d.ts +38 -0
- package/dist/agent-profiles.d.ts.map +1 -0
- package/dist/agent-profiles.js +138 -0
- package/dist/agent-profiles.js.map +1 -0
- package/dist/audit.d.ts +11 -0
- package/dist/audit.d.ts.map +1 -0
- package/dist/audit.js +65 -0
- package/dist/audit.js.map +1 -0
- package/dist/bootstrap-foundation.d.ts +83 -0
- package/dist/bootstrap-foundation.d.ts.map +1 -0
- package/dist/bootstrap-foundation.js +773 -0
- package/dist/bootstrap-foundation.js.map +1 -0
- package/dist/chat-routing.d.ts +15 -0
- package/dist/chat-routing.d.ts.map +1 -0
- package/dist/chat-routing.js +172 -0
- package/dist/chat-routing.js.map +1 -0
- package/dist/command-manifest.d.ts +39 -0
- package/dist/command-manifest.d.ts.map +1 -0
- package/dist/command-manifest.js +240 -0
- package/dist/command-manifest.js.map +1 -0
- package/dist/config-policy.d.ts +31 -0
- package/dist/config-policy.d.ts.map +1 -0
- package/dist/config-policy.js +341 -0
- package/dist/config-policy.js.map +1 -0
- package/dist/fake-runtime.d.ts +68 -0
- package/dist/fake-runtime.d.ts.map +1 -0
- package/dist/fake-runtime.js +285 -0
- package/dist/fake-runtime.js.map +1 -0
- package/dist/guard-boundary.d.ts +53 -0
- package/dist/guard-boundary.d.ts.map +1 -0
- package/dist/guard-boundary.js +220 -0
- package/dist/guard-boundary.js.map +1 -0
- package/dist/guarded-dry-run.d.ts +46 -0
- package/dist/guarded-dry-run.d.ts.map +1 -0
- package/dist/guarded-dry-run.js +111 -0
- package/dist/guarded-dry-run.js.map +1 -0
- package/dist/hook-harness.d.ts +8 -0
- package/dist/hook-harness.d.ts.map +1 -0
- package/dist/hook-harness.js +130 -0
- package/dist/hook-harness.js.map +1 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/lane-observability.d.ts +22 -0
- package/dist/lane-observability.d.ts.map +1 -0
- package/dist/lane-observability.js +138 -0
- package/dist/lane-observability.js.map +1 -0
- package/dist/plan.d.ts +37 -0
- package/dist/plan.d.ts.map +1 -0
- package/dist/plan.js +137 -0
- package/dist/plan.js.map +1 -0
- package/dist/production-enablement.d.ts +57 -0
- package/dist/production-enablement.d.ts.map +1 -0
- package/dist/production-enablement.js +259 -0
- package/dist/production-enablement.js.map +1 -0
- package/dist/provider-failures.d.ts +19 -0
- package/dist/provider-failures.d.ts.map +1 -0
- package/dist/provider-failures.js +116 -0
- package/dist/provider-failures.js.map +1 -0
- package/dist/provider-usage-collector.d.ts +60 -0
- package/dist/provider-usage-collector.d.ts.map +1 -0
- package/dist/provider-usage-collector.js +502 -0
- package/dist/provider-usage-collector.js.map +1 -0
- package/dist/redaction.d.ts +5 -0
- package/dist/redaction.d.ts.map +1 -0
- package/dist/redaction.js +11 -0
- package/dist/redaction.js.map +1 -0
- package/dist/release1-contracts.d.ts +1203 -0
- package/dist/release1-contracts.d.ts.map +1 -0
- package/dist/release1-contracts.js +256 -0
- package/dist/release1-contracts.js.map +1 -0
- package/dist/retry.d.ts +21 -0
- package/dist/retry.d.ts.map +1 -0
- package/dist/retry.js +107 -0
- package/dist/retry.js.map +1 -0
- package/dist/reviewer-lane-conformance.d.ts +35 -0
- package/dist/reviewer-lane-conformance.d.ts.map +1 -0
- package/dist/reviewer-lane-conformance.js +124 -0
- package/dist/reviewer-lane-conformance.js.map +1 -0
- package/dist/schema-artifacts.d.ts +19 -0
- package/dist/schema-artifacts.d.ts.map +1 -0
- package/dist/schema-artifacts.js +182 -0
- package/dist/schema-artifacts.js.map +1 -0
- package/dist/schema-registry.d.ts +32 -0
- package/dist/schema-registry.d.ts.map +1 -0
- package/dist/schema-registry.js +163 -0
- package/dist/schema-registry.js.map +1 -0
- package/dist/session-evidence.d.ts +71 -0
- package/dist/session-evidence.d.ts.map +1 -0
- package/dist/session-evidence.js +336 -0
- package/dist/session-evidence.js.map +1 -0
- package/dist/state-paths.d.ts +20 -0
- package/dist/state-paths.d.ts.map +1 -0
- package/dist/state-paths.js +72 -0
- package/dist/state-paths.js.map +1 -0
- package/dist/state-store.d.ts +75 -0
- package/dist/state-store.d.ts.map +1 -0
- package/dist/state-store.js +567 -0
- package/dist/state-store.js.map +1 -0
- package/dist/status.d.ts +37 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +304 -0
- package/dist/status.js.map +1 -0
- package/dist/tool-contract-fixtures.d.ts +134 -0
- package/dist/tool-contract-fixtures.d.ts.map +1 -0
- package/dist/tool-contract-fixtures.js +389 -0
- package/dist/tool-contract-fixtures.js.map +1 -0
- package/dist/top-tier-reviewer-lane-probe.d.ts +10 -0
- package/dist/top-tier-reviewer-lane-probe.d.ts.map +1 -0
- package/dist/top-tier-reviewer-lane-probe.js +76 -0
- package/dist/top-tier-reviewer-lane-probe.js.map +1 -0
- package/dist/usage-health.d.ts +44 -0
- package/dist/usage-health.d.ts.map +1 -0
- package/dist/usage-health.js +105 -0
- package/dist/usage-health.js.map +1 -0
- package/dist/validators.d.ts +142 -0
- package/dist/validators.d.ts.map +1 -0
- package/dist/validators.js +1690 -0
- package/dist/validators.js.map +1 -0
- package/package.json +37 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { FlowDeskEffectivePolicyV1, FlowDeskNonDispatchPermissionV1, FlowDeskPolicyPackV1, FlowDeskProjectConfigV1 } from "./release1-contracts.js";
|
|
2
|
+
import { type ValidationResult } from "./validators.js";
|
|
3
|
+
export interface ConfigPolicyValidationOptions {
|
|
4
|
+
expectedConfigHash?: string;
|
|
5
|
+
expectedPolicyPackHashes?: readonly string[];
|
|
6
|
+
registeredExtensionNamespaces?: readonly string[];
|
|
7
|
+
now?: number;
|
|
8
|
+
expectedWorkflowId?: string;
|
|
9
|
+
expectedScopeRef?: string;
|
|
10
|
+
expectedAuditRef?: string;
|
|
11
|
+
expectedPermissionClass?: FlowDeskNonDispatchPermissionV1["permission_class"];
|
|
12
|
+
requireWorkflowId?: boolean;
|
|
13
|
+
requireAuditRef?: boolean;
|
|
14
|
+
forbiddenGrantSources?: readonly FlowDeskNonDispatchPermissionV1["grant_source"][];
|
|
15
|
+
}
|
|
16
|
+
export interface MergePolicyPackOptions {
|
|
17
|
+
effectivePolicyId: string;
|
|
18
|
+
computedAt: string;
|
|
19
|
+
auditRef: string;
|
|
20
|
+
registeredExtensionNamespaces?: readonly string[];
|
|
21
|
+
}
|
|
22
|
+
export declare function validateProjectConfigV1(value: unknown, options?: ConfigPolicyValidationOptions): ValidationResult;
|
|
23
|
+
export declare function assertProjectConfigV1(value: unknown, options?: ConfigPolicyValidationOptions): asserts value is FlowDeskProjectConfigV1;
|
|
24
|
+
export declare function validatePolicyPackV1(value: unknown, options?: ConfigPolicyValidationOptions): ValidationResult;
|
|
25
|
+
export declare function assertPolicyPackV1(value: unknown, options?: ConfigPolicyValidationOptions): asserts value is FlowDeskPolicyPackV1;
|
|
26
|
+
export declare function validateEffectivePolicyV1(value: unknown, options?: ConfigPolicyValidationOptions): ValidationResult;
|
|
27
|
+
export declare function assertEffectivePolicyV1(value: unknown, options?: ConfigPolicyValidationOptions): asserts value is FlowDeskEffectivePolicyV1;
|
|
28
|
+
export declare function validateNonDispatchPermissionV1(value: unknown, options?: ConfigPolicyValidationOptions): ValidationResult;
|
|
29
|
+
export declare function assertNonDispatchPermissionV1(value: unknown, options?: ConfigPolicyValidationOptions): asserts value is FlowDeskNonDispatchPermissionV1;
|
|
30
|
+
export declare function mergePolicyPacksV1(config: FlowDeskProjectConfigV1, policyPacks: readonly FlowDeskPolicyPackV1[], options: MergePolicyPackOptions): FlowDeskEffectivePolicyV1;
|
|
31
|
+
//# sourceMappingURL=config-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-policy.d.ts","sourceRoot":"","sources":["../src/config-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,yBAAyB,EAEzB,+BAA+B,EAC/B,oBAAoB,EAEpB,uBAAuB,EAKxB,MAAM,yBAAyB,CAAC;AAUjC,OAAO,EAEL,KAAK,gBAAgB,EAMtB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,6BAA6B;IAC5C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wBAAwB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,6BAA6B,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uBAAuB,CAAC,EAAE,+BAA+B,CAAC,kBAAkB,CAAC,CAAC;IAC9E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qBAAqB,CAAC,EAAE,SAAS,+BAA+B,CAAC,cAAc,CAAC,EAAE,CAAC;CACpF;AAED,MAAM,WAAW,sBAAsB;IACrC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,6BAA6B,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnD;AA2JD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,6BAA6B,GAAG,gBAAgB,CAuBjH;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,6BAA6B,GAAG,OAAO,CAAC,KAAK,IAAI,uBAAuB,CAGvI;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,6BAA6B,GAAG,gBAAgB,CAyB9G;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,6BAA6B,GAAG,OAAO,CAAC,KAAK,IAAI,oBAAoB,CAGjI;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,6BAA6B,GAAG,gBAAgB,CAoBnH;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,6BAA6B,GAAG,OAAO,CAAC,KAAK,IAAI,yBAAyB,CAG3I;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,6BAA6B,GAAG,gBAAgB,CA2BzH;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,6BAA6B,GAAG,OAAO,CAAC,KAAK,IAAI,+BAA+B,CAGvJ;AA4BD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,uBAAuB,EAAE,WAAW,EAAE,SAAS,oBAAoB,EAAE,EAAE,OAAO,EAAE,sBAAsB,GAAG,yBAAyB,CAoC5K"}
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
import { CHAT_INTAKE_MODES, DISABLED_MODES, HOOK_HARNESS_MODES, NON_DISPATCH_PERMISSION_CLASSES, POLICY_EFFECTS, POLICY_RULE_TARGETS, RELEASE_MODES } from "./release1-contracts.js";
|
|
2
|
+
import { invalid, valid, validateNoForbiddenRawPayloads, validateOpaqueId, validateOpaqueRef, validateSchemaArtifactValue } from "./validators.js";
|
|
3
|
+
const DEFAULT_REGISTERED_EXTENSION_NAMESPACES = ["flowdesk.core", "flowdesk.project"];
|
|
4
|
+
const DEFAULT_DISABLED_RELEASE1_MODES = ["real_dispatch", "managed_fallback", "lane_launch", "hard_chat_blocking"];
|
|
5
|
+
const SAFE_HOOK_POLICY = {
|
|
6
|
+
chat_intake_mode: "steering",
|
|
7
|
+
hook_harness_mode: "enforce",
|
|
8
|
+
blocking_chat_intake_enabled: false,
|
|
9
|
+
hard_no_reply_or_cancel_enabled: false
|
|
10
|
+
};
|
|
11
|
+
function isRecord(value) {
|
|
12
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
13
|
+
}
|
|
14
|
+
function combine(results) {
|
|
15
|
+
const errors = results.flatMap((result) => result.errors);
|
|
16
|
+
return errors.length === 0 ? valid() : invalid(...errors);
|
|
17
|
+
}
|
|
18
|
+
function rejectUnknownProperties(value, allowed, label) {
|
|
19
|
+
const unknown = Object.keys(value).filter((key) => !allowed.includes(key));
|
|
20
|
+
return unknown.length === 0 ? valid() : invalid(`${label} unknown properties: ${unknown.join(",")}`);
|
|
21
|
+
}
|
|
22
|
+
function isEnumValue(value, allowed) {
|
|
23
|
+
return typeof value === "string" && allowed.includes(value);
|
|
24
|
+
}
|
|
25
|
+
function validateTimestamp(value, label) {
|
|
26
|
+
return typeof value === "string" && Number.isFinite(Date.parse(value)) ? valid() : invalid(`${label} must be a timestamp`);
|
|
27
|
+
}
|
|
28
|
+
function validateHash(value, label) {
|
|
29
|
+
if (typeof value !== "string" || value.length < 3 || value.length > 128)
|
|
30
|
+
return invalid(`${label} must be a bounded hash`);
|
|
31
|
+
if (!/^[A-Za-z0-9][A-Za-z0-9_.:-]*$/.test(value))
|
|
32
|
+
return invalid(`${label} is not schema-safe`);
|
|
33
|
+
return validateNoForbiddenRawPayloads(value, label);
|
|
34
|
+
}
|
|
35
|
+
function validateNoLegacyPolicyImport(value, label) {
|
|
36
|
+
return typeof value === "string" && /\b(omo|omc|dex|conductor|external-policy|policy-import)\b/i.test(value) ? invalid(`${label} imports legacy or arbitrary external policy`) : valid();
|
|
37
|
+
}
|
|
38
|
+
function validateHashArray(value, label) {
|
|
39
|
+
if (!Array.isArray(value))
|
|
40
|
+
return invalid(`${label} must be an array`);
|
|
41
|
+
return combine(value.map((item, index) => validateHash(item, `${label}[${index}]`)));
|
|
42
|
+
}
|
|
43
|
+
function validateRefArray(value, label) {
|
|
44
|
+
if (!Array.isArray(value))
|
|
45
|
+
return invalid(`${label} must be an array`);
|
|
46
|
+
return combine(value.map((item, index) => validateOpaqueRef(item, `${label}[${index}]`)));
|
|
47
|
+
}
|
|
48
|
+
function validateDisabledModes(value, label) {
|
|
49
|
+
if (!Array.isArray(value))
|
|
50
|
+
return invalid(`${label} must be an array`);
|
|
51
|
+
return combine(value.map((item, index) => (isEnumValue(item, DISABLED_MODES) ? valid() : invalid(`${label}[${index}] is invalid`))));
|
|
52
|
+
}
|
|
53
|
+
function validateExtensionNamespaces(value, options) {
|
|
54
|
+
if (!Array.isArray(value))
|
|
55
|
+
return invalid("extension_namespaces must be an array");
|
|
56
|
+
const registered = new Set(options?.registeredExtensionNamespaces ?? DEFAULT_REGISTERED_EXTENSION_NAMESPACES);
|
|
57
|
+
const errors = [];
|
|
58
|
+
value.forEach((item, index) => {
|
|
59
|
+
if (typeof item !== "string" || !/^[a-z][a-z0-9]*(\.[a-z][a-z0-9]*)+$/.test(item))
|
|
60
|
+
errors.push(`extension_namespaces[${index}] is not schema-safe`);
|
|
61
|
+
if (typeof item === "string" && /\b(omo|omc|dex|conductor)\b/i.test(item))
|
|
62
|
+
errors.push(`extension_namespaces[${index}] imports a legacy namespace`);
|
|
63
|
+
if (typeof item === "string" && !registered.has(item))
|
|
64
|
+
errors.push(`extension_namespaces[${index}] is not registered`);
|
|
65
|
+
});
|
|
66
|
+
return errors.length === 0 ? valid() : invalid(...errors);
|
|
67
|
+
}
|
|
68
|
+
function validateRetentionPolicy(value, label = "retention", allowLongerExplicitConfig = false) {
|
|
69
|
+
if (!isRecord(value))
|
|
70
|
+
return invalid(`${label} must be an object`);
|
|
71
|
+
const session = value.session_records_max_days;
|
|
72
|
+
const debug = value.debug_staging_max_days;
|
|
73
|
+
const conformance = value.conformance_summary_max_days;
|
|
74
|
+
const allowLonger = value.allow_user_longer_retention === true;
|
|
75
|
+
return combine([
|
|
76
|
+
rejectUnknownProperties(value, ["session_records_max_days", "debug_staging_max_days", "conformance_summary_max_days", "allow_user_longer_retention", "deletion_behavior"], label),
|
|
77
|
+
typeof session === "number" && session >= 0 ? valid() : invalid(`${label}.session_records_max_days is invalid`),
|
|
78
|
+
typeof debug === "number" && debug >= 0 ? valid() : invalid(`${label}.debug_staging_max_days is invalid`),
|
|
79
|
+
typeof conformance === "number" && conformance >= 0 ? valid() : invalid(`${label}.conformance_summary_max_days is invalid`),
|
|
80
|
+
typeof value.allow_user_longer_retention === "boolean" ? valid() : invalid(`${label}.allow_user_longer_retention must be boolean`),
|
|
81
|
+
isEnumValue(value.deletion_behavior, ["delete_after_expiry", "keep_until_policy_expiry", "manual_cleanup_only"]) ? valid() : invalid(`${label}.deletion_behavior is invalid`),
|
|
82
|
+
!allowLonger && (session > 14 || debug > 7 || conformance > 30) ? invalid(`${label} exceeds Release 1 default retention without explicit user config`) : valid(),
|
|
83
|
+
allowLonger && !allowLongerExplicitConfig ? invalid(`${label} cannot lengthen retention from Policy Pack`) : valid()
|
|
84
|
+
]);
|
|
85
|
+
}
|
|
86
|
+
function validateUsagePolicy(value, label = "usage_policy") {
|
|
87
|
+
if (!isRecord(value))
|
|
88
|
+
return invalid(`${label} must be an object`);
|
|
89
|
+
return combine([
|
|
90
|
+
rejectUnknownProperties(value, ["usage_freshness_ttl_minutes", "unknown_usage_dispatchability", "stale_usage_dispatchability", "refused_usage_dispatchability", "shared_limit_suspected_dispatchability", "fallback_derived_dispatchability", "allow_local_history_source", "allow_provider_console_scraping"], label),
|
|
91
|
+
typeof value.usage_freshness_ttl_minutes === "number" && value.usage_freshness_ttl_minutes >= 0 ? valid() : invalid(`${label}.usage_freshness_ttl_minutes is invalid`),
|
|
92
|
+
value.unknown_usage_dispatchability === "non_dispatchable" ? valid() : invalid(`${label}.unknown_usage_dispatchability must fail closed`),
|
|
93
|
+
value.stale_usage_dispatchability === "non_dispatchable" ? valid() : invalid(`${label}.stale_usage_dispatchability must fail closed`),
|
|
94
|
+
value.refused_usage_dispatchability === "non_dispatchable" ? valid() : invalid(`${label}.refused_usage_dispatchability must fail closed`),
|
|
95
|
+
value.shared_limit_suspected_dispatchability === "non_dispatchable" ? valid() : invalid(`${label}.shared_limit_suspected_dispatchability must fail closed`),
|
|
96
|
+
value.fallback_derived_dispatchability === "non_dispatchable" ? valid() : invalid(`${label}.fallback_derived_dispatchability must fail closed`),
|
|
97
|
+
typeof value.allow_local_history_source === "boolean" ? valid() : invalid(`${label}.allow_local_history_source must be boolean`),
|
|
98
|
+
value.allow_provider_console_scraping === false ? valid() : invalid(`${label}.allow_provider_console_scraping must be false`)
|
|
99
|
+
]);
|
|
100
|
+
}
|
|
101
|
+
function validateProviderHealthPolicy(value, label = "provider_health_policy") {
|
|
102
|
+
if (!isRecord(value))
|
|
103
|
+
return invalid(`${label} must be an object`);
|
|
104
|
+
return combine([
|
|
105
|
+
rejectUnknownProperties(value, ["health_freshness_ttl_minutes", "unavailable_dispatchability", "degraded_dispatchability", "opencode_go_usage_without_official_quota", "z_ai_usage_without_official_quota", "allow_automatic_provider_fallback"], label),
|
|
106
|
+
typeof value.health_freshness_ttl_minutes === "number" && value.health_freshness_ttl_minutes >= 0 ? valid() : invalid(`${label}.health_freshness_ttl_minutes is invalid`),
|
|
107
|
+
value.unavailable_dispatchability === "non_dispatchable" ? valid() : invalid(`${label}.unavailable_dispatchability must fail closed`),
|
|
108
|
+
isEnumValue(value.degraded_dispatchability, ["diagnostic_only", "non_dispatchable"]) ? valid() : invalid(`${label}.degraded_dispatchability is invalid`),
|
|
109
|
+
value.opencode_go_usage_without_official_quota === "unknown" ? valid() : invalid(`${label}.opencode_go_usage_without_official_quota must be unknown`),
|
|
110
|
+
value.z_ai_usage_without_official_quota === "unknown" ? valid() : invalid(`${label}.z_ai_usage_without_official_quota must be unknown`),
|
|
111
|
+
value.allow_automatic_provider_fallback === false ? valid() : invalid(`${label}.allow_automatic_provider_fallback must be false`)
|
|
112
|
+
]);
|
|
113
|
+
}
|
|
114
|
+
function validateHookPolicy(value, label = "hook_policy") {
|
|
115
|
+
if (!isRecord(value))
|
|
116
|
+
return invalid(`${label} must be an object`);
|
|
117
|
+
return combine([
|
|
118
|
+
rejectUnknownProperties(value, ["chat_intake_mode", "hook_harness_mode", "blocking_chat_intake_enabled", "hard_no_reply_or_cancel_enabled"], label),
|
|
119
|
+
isEnumValue(value.chat_intake_mode, CHAT_INTAKE_MODES) ? valid() : invalid(`${label}.chat_intake_mode is invalid`),
|
|
120
|
+
isEnumValue(value.hook_harness_mode, HOOK_HARNESS_MODES) ? valid() : invalid(`${label}.hook_harness_mode is invalid`),
|
|
121
|
+
value.blocking_chat_intake_enabled === false ? valid() : invalid(`${label}.blocking_chat_intake_enabled must be false`),
|
|
122
|
+
value.hard_no_reply_or_cancel_enabled === false ? valid() : invalid(`${label}.hard_no_reply_or_cancel_enabled must be false`)
|
|
123
|
+
]);
|
|
124
|
+
}
|
|
125
|
+
function validatePolicyRule(value, label) {
|
|
126
|
+
if (!isRecord(value))
|
|
127
|
+
return invalid(`${label} must be an object`);
|
|
128
|
+
return combine([
|
|
129
|
+
rejectUnknownProperties(value, ["rule_id", "effect", "target", "summary_label", "refs"], label),
|
|
130
|
+
validateOpaqueId(value.rule_id, `${label}.rule_id`),
|
|
131
|
+
isEnumValue(value.effect, POLICY_EFFECTS) ? valid() : invalid(`${label}.effect is invalid`),
|
|
132
|
+
isEnumValue(value.target, POLICY_RULE_TARGETS) ? valid() : invalid(`${label}.target is invalid`),
|
|
133
|
+
value.effect === "allow" ? invalid(`${label}.effect cannot grant authority in Release 1`) : valid(),
|
|
134
|
+
typeof value.summary_label === "string" && value.summary_label.length > 0 && value.summary_label.length <= 160 ? validateNoForbiddenRawPayloads(value.summary_label, `${label}.summary_label`) : invalid(`${label}.summary_label is invalid`),
|
|
135
|
+
validateRefArray(value.refs, `${label}.refs`)
|
|
136
|
+
]);
|
|
137
|
+
}
|
|
138
|
+
function validatePolicyRules(value) {
|
|
139
|
+
if (!Array.isArray(value))
|
|
140
|
+
return invalid("rules must be an array");
|
|
141
|
+
return combine(value.map((rule, index) => validatePolicyRule(rule, `rules[${index}]`)));
|
|
142
|
+
}
|
|
143
|
+
function validateModeSafety(disabledModes, hookHarnessMode) {
|
|
144
|
+
const modes = new Set(Array.isArray(disabledModes) ? disabledModes : []);
|
|
145
|
+
const errors = [];
|
|
146
|
+
for (const mode of DEFAULT_DISABLED_RELEASE1_MODES) {
|
|
147
|
+
if (!modes.has(mode))
|
|
148
|
+
errors.push(`Release 1 must disable ${mode}`);
|
|
149
|
+
}
|
|
150
|
+
if ((hookHarnessMode === "off" || hookHarnessMode === "observe") && !modes.has("chat_routed"))
|
|
151
|
+
errors.push("non-enforcing hook harness cannot leave chat_routed managed behavior enabled");
|
|
152
|
+
return errors.length === 0 ? valid() : invalid(...errors);
|
|
153
|
+
}
|
|
154
|
+
export function validateProjectConfigV1(value, options) {
|
|
155
|
+
if (!isRecord(value))
|
|
156
|
+
return invalid("project config must be an object");
|
|
157
|
+
return combine([
|
|
158
|
+
validateSchemaArtifactValue("flowdesk.project_config.v1", value),
|
|
159
|
+
validateOpaqueId(value.config_id, "config_id"),
|
|
160
|
+
validateTimestamp(value.created_at, "created_at"),
|
|
161
|
+
validateTimestamp(value.updated_at, "updated_at"),
|
|
162
|
+
value.release_mode === "release1" ? valid() : invalid("project config release_mode must be release1"),
|
|
163
|
+
validateOpaqueRef(value.project_root_ref, "project_root_ref"),
|
|
164
|
+
validateHash(value.config_hash, "config_hash"),
|
|
165
|
+
options?.expectedConfigHash !== undefined && value.config_hash !== options.expectedConfigHash ? invalid("config_hash mismatch") : valid(),
|
|
166
|
+
validateRefArray(value.policy_pack_refs, "policy_pack_refs"),
|
|
167
|
+
validateHashArray(value.policy_pack_hashes, "policy_pack_hashes"),
|
|
168
|
+
isEnumValue(value.chat_intake_mode, CHAT_INTAKE_MODES) ? valid() : invalid("chat_intake_mode is invalid"),
|
|
169
|
+
isEnumValue(value.hook_harness_mode, HOOK_HARNESS_MODES) ? valid() : invalid("hook_harness_mode is invalid"),
|
|
170
|
+
validateRetentionPolicy(value.retention, "retention", true),
|
|
171
|
+
validateUsagePolicy(value.usage_policy),
|
|
172
|
+
validateProviderHealthPolicy(value.provider_health_policy),
|
|
173
|
+
validateDisabledModes(value.disabled_modes, "disabled_modes"),
|
|
174
|
+
validateModeSafety(value.disabled_modes, value.hook_harness_mode),
|
|
175
|
+
validateExtensionNamespaces(value.extension_namespaces, options),
|
|
176
|
+
validateRefArray(value.audit_refs, "audit_refs")
|
|
177
|
+
]);
|
|
178
|
+
}
|
|
179
|
+
export function assertProjectConfigV1(value, options) {
|
|
180
|
+
const result = validateProjectConfigV1(value, options);
|
|
181
|
+
if (!result.ok)
|
|
182
|
+
throw new Error(result.errors.join("; "));
|
|
183
|
+
}
|
|
184
|
+
export function validatePolicyPackV1(value, options) {
|
|
185
|
+
if (!isRecord(value))
|
|
186
|
+
return invalid("policy pack must be an object");
|
|
187
|
+
const appliesTo = Array.isArray(value.applies_to_release_modes) ? value.applies_to_release_modes : [];
|
|
188
|
+
return combine([
|
|
189
|
+
validateSchemaArtifactValue("flowdesk.policy_pack.v1", value),
|
|
190
|
+
validateOpaqueId(value.policy_pack_id, "policy_pack_id"),
|
|
191
|
+
validateHash(value.policy_pack_hash, "policy_pack_hash"),
|
|
192
|
+
options?.expectedPolicyPackHashes !== undefined && !options.expectedPolicyPackHashes.includes(String(value.policy_pack_hash)) ? invalid("policy_pack_hash mismatch") : valid(),
|
|
193
|
+
typeof value.name === "string" && value.name.length > 0 && value.name.length <= 128 ? validateNoForbiddenRawPayloads(value.name, "name") : invalid("name is invalid"),
|
|
194
|
+
typeof value.version === "string" && value.version.length > 0 && value.version.length <= 64 ? validateNoForbiddenRawPayloads(value.version, "version") : invalid("version is invalid"),
|
|
195
|
+
validateOpaqueRef(value.source_ref, "source_ref"),
|
|
196
|
+
validateNoLegacyPolicyImport(value.source_ref, "source_ref"),
|
|
197
|
+
Array.isArray(value.applies_to_release_modes) ? combine(value.applies_to_release_modes.map((mode, index) => (isEnumValue(mode, RELEASE_MODES) ? valid() : invalid(`applies_to_release_modes[${index}] is invalid`)))) : invalid("applies_to_release_modes must be an array"),
|
|
198
|
+
appliesTo.includes("release1") ? valid() : invalid("policy pack must include release1 compatibility to affect Release 1"),
|
|
199
|
+
typeof value.priority === "number" ? valid() : invalid("priority is invalid"),
|
|
200
|
+
validatePolicyRules(value.rules),
|
|
201
|
+
validateRefArray(value.hard_ban_refs, "hard_ban_refs"),
|
|
202
|
+
value.retention_override === undefined ? valid() : validateRetentionPolicy(value.retention_override, "retention_override", false),
|
|
203
|
+
value.usage_policy_override === undefined ? valid() : validateUsagePolicy(value.usage_policy_override, "usage_policy_override"),
|
|
204
|
+
value.provider_health_policy_override === undefined ? valid() : validateProviderHealthPolicy(value.provider_health_policy_override, "provider_health_policy_override"),
|
|
205
|
+
value.hook_policy_override === undefined ? valid() : validateHookPolicy(value.hook_policy_override, "hook_policy_override"),
|
|
206
|
+
isRecord(value.hook_policy_override) && value.hook_policy_override.hook_harness_mode !== "enforce" ? invalid("hook_policy_override cannot weaken hook containment from enforce") : valid(),
|
|
207
|
+
validateExtensionNamespaces(value.allowed_extension_namespaces, options),
|
|
208
|
+
validateOpaqueRef(value.redaction_baseline_ref, "redaction_baseline_ref")
|
|
209
|
+
]);
|
|
210
|
+
}
|
|
211
|
+
export function assertPolicyPackV1(value, options) {
|
|
212
|
+
const result = validatePolicyPackV1(value, options);
|
|
213
|
+
if (!result.ok)
|
|
214
|
+
throw new Error(result.errors.join("; "));
|
|
215
|
+
}
|
|
216
|
+
export function validateEffectivePolicyV1(value, options) {
|
|
217
|
+
if (!isRecord(value))
|
|
218
|
+
return invalid("effective policy must be an object");
|
|
219
|
+
return combine([
|
|
220
|
+
validateSchemaArtifactValue("flowdesk.effective_policy.v1", value),
|
|
221
|
+
validateOpaqueId(value.effective_policy_id, "effective_policy_id"),
|
|
222
|
+
validateHash(value.config_hash, "config_hash"),
|
|
223
|
+
options?.expectedConfigHash !== undefined && value.config_hash !== options.expectedConfigHash ? invalid("config_hash mismatch") : valid(),
|
|
224
|
+
validateHashArray(value.policy_pack_hashes, "policy_pack_hashes"),
|
|
225
|
+
options?.expectedPolicyPackHashes !== undefined && JSON.stringify(value.policy_pack_hashes) !== JSON.stringify([...options.expectedPolicyPackHashes]) ? invalid("policy_pack_hashes mismatch") : valid(),
|
|
226
|
+
validateTimestamp(value.computed_at, "computed_at"),
|
|
227
|
+
value.release_mode === "release1" ? valid() : invalid("effective policy release_mode must be release1"),
|
|
228
|
+
validateDisabledModes(value.disabled_modes, "disabled_modes"),
|
|
229
|
+
validateModeSafety(value.disabled_modes, isRecord(value.hook_policy) ? value.hook_policy.hook_harness_mode : undefined),
|
|
230
|
+
validateRetentionPolicy(value.retention, "retention", true),
|
|
231
|
+
validateUsagePolicy(value.usage_policy),
|
|
232
|
+
validateProviderHealthPolicy(value.provider_health_policy),
|
|
233
|
+
validateHookPolicy(value.hook_policy),
|
|
234
|
+
validatePolicyRules(value.rules),
|
|
235
|
+
validateOpaqueRef(value.audit_ref, "audit_ref")
|
|
236
|
+
]);
|
|
237
|
+
}
|
|
238
|
+
export function assertEffectivePolicyV1(value, options) {
|
|
239
|
+
const result = validateEffectivePolicyV1(value, options);
|
|
240
|
+
if (!result.ok)
|
|
241
|
+
throw new Error(result.errors.join("; "));
|
|
242
|
+
}
|
|
243
|
+
export function validateNonDispatchPermissionV1(value, options) {
|
|
244
|
+
if (!isRecord(value))
|
|
245
|
+
return invalid("non-dispatch permission must be an object");
|
|
246
|
+
const expiresAt = typeof value.expires_at === "string" ? Date.parse(value.expires_at) : Number.NaN;
|
|
247
|
+
return combine([
|
|
248
|
+
validateSchemaArtifactValue("flowdesk.non_dispatch_permission.v1", value),
|
|
249
|
+
validateOpaqueId(value.permission_id, "permission_id"),
|
|
250
|
+
isEnumValue(value.permission_class, NON_DISPATCH_PERMISSION_CLASSES) ? valid() : invalid("permission_class is invalid"),
|
|
251
|
+
options?.expectedPermissionClass !== undefined && value.permission_class !== options.expectedPermissionClass ? invalid("permission_class mismatch") : valid(),
|
|
252
|
+
value.workflow_id === undefined ? valid() : validateOpaqueId(value.workflow_id, "workflow_id"),
|
|
253
|
+
options?.requireWorkflowId === true && value.workflow_id === undefined ? invalid("workflow_id is required for scoped non-dispatch permission") : valid(),
|
|
254
|
+
options?.expectedWorkflowId !== undefined && value.workflow_id !== options.expectedWorkflowId ? invalid("workflow_id mismatch") : valid(),
|
|
255
|
+
validateOpaqueRef(value.scope_ref, "scope_ref"),
|
|
256
|
+
options?.expectedScopeRef !== undefined && value.scope_ref !== options.expectedScopeRef ? invalid("scope_ref mismatch") : valid(),
|
|
257
|
+
isEnumValue(value.grant_source, ["bootstrap", "guard_rule", "typed_confirmation", "policy_pack"]) ? valid() : invalid("grant_source is invalid"),
|
|
258
|
+
options?.forbiddenGrantSources?.includes(value.grant_source) === true ? invalid("grant_source is not allowed for this Guard boundary") : valid(),
|
|
259
|
+
validateTimestamp(value.created_at, "created_at"),
|
|
260
|
+
validateTimestamp(value.expires_at, "expires_at"),
|
|
261
|
+
options?.now !== undefined && Number.isFinite(expiresAt) && expiresAt <= options.now ? invalid("non-dispatch permission is expired") : valid(),
|
|
262
|
+
validateHash(value.config_hash, "config_hash"),
|
|
263
|
+
options?.expectedConfigHash !== undefined && value.config_hash !== options.expectedConfigHash ? invalid("config_hash mismatch") : valid(),
|
|
264
|
+
validateHash(value.policy_pack_hash, "policy_pack_hash"),
|
|
265
|
+
options?.expectedPolicyPackHashes !== undefined && !options.expectedPolicyPackHashes.includes(String(value.policy_pack_hash)) ? invalid("policy_pack_hash mismatch") : valid(),
|
|
266
|
+
value.release_mode === "release1" ? valid() : invalid("non-dispatch permission release_mode must be release1 for Release 1 use"),
|
|
267
|
+
options?.requireAuditRef === true && value.audit_ref === undefined ? invalid("audit_ref is required for scoped non-dispatch permission") : valid(),
|
|
268
|
+
value.audit_ref === undefined ? valid() : validateOpaqueRef(value.audit_ref, "audit_ref"),
|
|
269
|
+
options?.expectedAuditRef !== undefined && value.audit_ref !== options.expectedAuditRef ? invalid("audit_ref mismatch") : valid()
|
|
270
|
+
]);
|
|
271
|
+
}
|
|
272
|
+
export function assertNonDispatchPermissionV1(value, options) {
|
|
273
|
+
const result = validateNonDispatchPermissionV1(value, options);
|
|
274
|
+
if (!result.ok)
|
|
275
|
+
throw new Error(result.errors.join("; "));
|
|
276
|
+
}
|
|
277
|
+
function shortestRetention(base, override) {
|
|
278
|
+
if (override === undefined)
|
|
279
|
+
return { ...base };
|
|
280
|
+
return {
|
|
281
|
+
session_records_max_days: Math.min(base.session_records_max_days, override.session_records_max_days),
|
|
282
|
+
debug_staging_max_days: Math.min(base.debug_staging_max_days, override.debug_staging_max_days),
|
|
283
|
+
conformance_summary_max_days: Math.min(base.conformance_summary_max_days, override.conformance_summary_max_days),
|
|
284
|
+
allow_user_longer_retention: base.allow_user_longer_retention && override.allow_user_longer_retention,
|
|
285
|
+
deletion_behavior: base.deletion_behavior === "delete_after_expiry" || override.deletion_behavior === "delete_after_expiry" ? "delete_after_expiry" : override.deletion_behavior
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
function narrowUsagePolicy(base, override) {
|
|
289
|
+
return override === undefined ? { ...base } : { ...base, usage_freshness_ttl_minutes: Math.min(base.usage_freshness_ttl_minutes, override.usage_freshness_ttl_minutes), allow_local_history_source: base.allow_local_history_source && override.allow_local_history_source };
|
|
290
|
+
}
|
|
291
|
+
function narrowHealthPolicy(base, override) {
|
|
292
|
+
return override === undefined ? { ...base } : { ...base, health_freshness_ttl_minutes: Math.min(base.health_freshness_ttl_minutes, override.health_freshness_ttl_minutes), degraded_dispatchability: base.degraded_dispatchability === "non_dispatchable" || override.degraded_dispatchability === "non_dispatchable" ? "non_dispatchable" : "diagnostic_only" };
|
|
293
|
+
}
|
|
294
|
+
function narrowHookPolicy(base, override) {
|
|
295
|
+
if (override === undefined)
|
|
296
|
+
return { ...base };
|
|
297
|
+
const hookOrder = { enforce: 0, observe: 1, off: 2 };
|
|
298
|
+
const hook_harness_mode = hookOrder[override.hook_harness_mode] > hookOrder[base.hook_harness_mode] ? override.hook_harness_mode : base.hook_harness_mode;
|
|
299
|
+
return { ...base, chat_intake_mode: override.chat_intake_mode === "off" ? "off" : base.chat_intake_mode, hook_harness_mode, blocking_chat_intake_enabled: false, hard_no_reply_or_cancel_enabled: false };
|
|
300
|
+
}
|
|
301
|
+
export function mergePolicyPacksV1(config, policyPacks, options) {
|
|
302
|
+
const extensionRegistry = options.registeredExtensionNamespaces ?? DEFAULT_REGISTERED_EXTENSION_NAMESPACES;
|
|
303
|
+
assertProjectConfigV1(config, { expectedConfigHash: config.config_hash, registeredExtensionNamespaces: extensionRegistry });
|
|
304
|
+
for (const pack of policyPacks)
|
|
305
|
+
assertPolicyPackV1(pack, { registeredExtensionNamespaces: extensionRegistry });
|
|
306
|
+
const disabledModes = new Set([...DEFAULT_DISABLED_RELEASE1_MODES, ...config.disabled_modes]);
|
|
307
|
+
let retention = { ...config.retention };
|
|
308
|
+
let usagePolicy = { ...config.usage_policy };
|
|
309
|
+
let providerHealthPolicy = { ...config.provider_health_policy };
|
|
310
|
+
let hookPolicy = { ...SAFE_HOOK_POLICY, chat_intake_mode: config.chat_intake_mode, hook_harness_mode: config.hook_harness_mode };
|
|
311
|
+
const rules = [];
|
|
312
|
+
for (const pack of [...policyPacks].sort((a, b) => a.priority - b.priority)) {
|
|
313
|
+
retention = shortestRetention(retention, pack.retention_override);
|
|
314
|
+
usagePolicy = narrowUsagePolicy(usagePolicy, pack.usage_policy_override);
|
|
315
|
+
providerHealthPolicy = narrowHealthPolicy(providerHealthPolicy, pack.provider_health_policy_override);
|
|
316
|
+
hookPolicy = narrowHookPolicy(hookPolicy, pack.hook_policy_override);
|
|
317
|
+
for (const rule of pack.rules) {
|
|
318
|
+
rules.push({ ...rule, refs: [...rule.refs] });
|
|
319
|
+
if (rule.effect === "disable_mode" && isEnumValue(rule.target, ["release_mode", "tool", "provider_family", "agent_profile", "extension"]))
|
|
320
|
+
disabledModes.add("workflow_optimization");
|
|
321
|
+
if (rule.effect === "require_approval")
|
|
322
|
+
disabledModes.add("real_dispatch");
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
return {
|
|
326
|
+
schema_version: "flowdesk.effective_policy.v1",
|
|
327
|
+
effective_policy_id: options.effectivePolicyId,
|
|
328
|
+
config_hash: config.config_hash,
|
|
329
|
+
policy_pack_hashes: policyPacks.map((pack) => pack.policy_pack_hash),
|
|
330
|
+
computed_at: options.computedAt,
|
|
331
|
+
release_mode: "release1",
|
|
332
|
+
disabled_modes: [...disabledModes],
|
|
333
|
+
retention,
|
|
334
|
+
usage_policy: usagePolicy,
|
|
335
|
+
provider_health_policy: providerHealthPolicy,
|
|
336
|
+
hook_policy: hookPolicy,
|
|
337
|
+
rules,
|
|
338
|
+
audit_ref: options.auditRef
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
//# sourceMappingURL=config-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-policy.js","sourceRoot":"","sources":["../src/config-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { type FlowDeskRelease1MinimumPortableCommandName } from "./command-manifest.js";
|
|
2
|
+
import { type GuardBoundaryDecisionV1, type GuardBoundaryInputV1 } from "./guard-boundary.js";
|
|
3
|
+
import type { FlowDeskAttemptRecordV1, FlowDeskAuditRecordV1, FlowDeskLaneObservabilityArtifactV1, FlowDeskLaneRecordV1, FlowDeskLaneSummaryArtifactV1, FlowDeskNonDispatchPermissionV1, FlowDeskRunRequestV1, FlowDeskRunResponseV1, FlowDeskVerificationSummaryArtifactV1, IsoTimestamp, OpaqueId, OpaqueRef } from "./release1-contracts.js";
|
|
4
|
+
import type { FlowDeskStateWriteIntent } from "./state-store.js";
|
|
5
|
+
import { type ValidationResult } from "./validators.js";
|
|
6
|
+
export interface FlowDeskFakeRuntimeCommandInputV1 {
|
|
7
|
+
commandName: FlowDeskRelease1MinimumPortableCommandName;
|
|
8
|
+
request: FlowDeskRunRequestV1;
|
|
9
|
+
guardBoundary: Omit<GuardBoundaryInputV1, "operation" | "workflowId">;
|
|
10
|
+
auditWritePermission: FlowDeskNonDispatchPermissionV1;
|
|
11
|
+
stateWritePermission: FlowDeskNonDispatchPermissionV1;
|
|
12
|
+
sessionId: OpaqueId;
|
|
13
|
+
attemptId: OpaqueId;
|
|
14
|
+
auditEventId: OpaqueId;
|
|
15
|
+
outcomeAuditEventId: OpaqueId;
|
|
16
|
+
nowIso: IsoTimestamp;
|
|
17
|
+
decisionRef: OpaqueRef;
|
|
18
|
+
routeRef: OpaqueRef;
|
|
19
|
+
commandShapeHash: string;
|
|
20
|
+
runResultRef: OpaqueRef;
|
|
21
|
+
runtimeEchoEvidenceRef: OpaqueRef;
|
|
22
|
+
verificationSummaryRef: OpaqueRef;
|
|
23
|
+
outcomeAuditRef: OpaqueRef;
|
|
24
|
+
redactionVersion: string;
|
|
25
|
+
laneId?: OpaqueId;
|
|
26
|
+
laneTaskRef?: OpaqueRef;
|
|
27
|
+
laneSummaryRef?: OpaqueRef;
|
|
28
|
+
laneObservabilityRef?: OpaqueRef;
|
|
29
|
+
laneEventRef?: OpaqueRef;
|
|
30
|
+
laneDebugRef?: OpaqueRef;
|
|
31
|
+
}
|
|
32
|
+
export interface FlowDeskFakeRuntimeEvidenceRefsV1 {
|
|
33
|
+
plan_revision_id: OpaqueId;
|
|
34
|
+
route_ref: OpaqueRef;
|
|
35
|
+
guard_decision_ref: OpaqueRef;
|
|
36
|
+
command_shape_hash: string;
|
|
37
|
+
runtime_capability_ref: OpaqueRef;
|
|
38
|
+
fake_runtime_result_ref: OpaqueRef;
|
|
39
|
+
runtime_echo_evidence_ref: OpaqueRef;
|
|
40
|
+
verification_summary_ref: OpaqueRef;
|
|
41
|
+
pre_run_audit_ref: OpaqueRef;
|
|
42
|
+
request_schema_id: "flowdesk.run.request.v1";
|
|
43
|
+
response_schema_id: "flowdesk.run.response.v1";
|
|
44
|
+
}
|
|
45
|
+
export interface FlowDeskFakeRuntimeCommandEvaluationV1 extends ValidationResult {
|
|
46
|
+
commandName: FlowDeskRelease1MinimumPortableCommandName;
|
|
47
|
+
guardDecision: GuardBoundaryDecisionV1;
|
|
48
|
+
response: FlowDeskRunResponseV1;
|
|
49
|
+
evidenceRefs?: FlowDeskFakeRuntimeEvidenceRefsV1;
|
|
50
|
+
verificationSummaryArtifact?: FlowDeskVerificationSummaryArtifactV1;
|
|
51
|
+
laneRecord?: FlowDeskLaneRecordV1;
|
|
52
|
+
laneSummaryArtifact?: FlowDeskLaneSummaryArtifactV1;
|
|
53
|
+
laneObservabilityArtifact?: FlowDeskLaneObservabilityArtifactV1;
|
|
54
|
+
preRunAuditIntent?: FlowDeskStateWriteIntent<FlowDeskAuditRecordV1>;
|
|
55
|
+
outcomeAuditIntent?: FlowDeskStateWriteIntent<FlowDeskAuditRecordV1>;
|
|
56
|
+
attemptRecordIntent?: FlowDeskStateWriteIntent<FlowDeskAttemptRecordV1>;
|
|
57
|
+
laneRecordIntent?: FlowDeskStateWriteIntent<FlowDeskLaneRecordV1>;
|
|
58
|
+
runtime: {
|
|
59
|
+
realOpenCodeDispatch: false;
|
|
60
|
+
actualLaneLaunch: false;
|
|
61
|
+
providerCall: false;
|
|
62
|
+
automaticFallbackOrReselection: false;
|
|
63
|
+
hardCancelOrNoReply: false;
|
|
64
|
+
stateWriteApplied: false;
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export declare function evaluateFlowDeskFakeRuntimeCommandV1(input: FlowDeskFakeRuntimeCommandInputV1): FlowDeskFakeRuntimeCommandEvaluationV1;
|
|
68
|
+
//# sourceMappingURL=fake-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fake-runtime.d.ts","sourceRoot":"","sources":["../src/fake-runtime.ts"],"names":[],"mappings":"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"}
|