@treeseed/sdk 0.13.0-rc.97 → 0.13.0-rc.98
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/.treeseed-build-complete.json +1 -1
- package/dist/development/schemas.d.ts +206 -37
- package/dist/development/schemas.js +10 -10
- package/dist/development/session-migration.d.ts +3 -0
- package/dist/development/session-migration.js +25 -0
- package/dist/operator-contracts/canonical-command-tree.js +2 -2
- package/dist/operator-contracts/catalog/knowledge-share-operations.d.ts +4 -4
- package/dist/operator-contracts/control-plane-operations.d.ts +4 -4
- package/dist/operator-contracts/knowledge/contracts.d.ts +4 -4
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"completedAt":"2026-09-07T16:
|
|
1
|
+
{"completedAt":"2026-09-07T16:59:35.411Z"}
|
|
@@ -1062,8 +1062,8 @@ export declare const developmentTargetSchema: z.ZodEffects<z.ZodObject<{
|
|
|
1062
1062
|
}[] | undefined;
|
|
1063
1063
|
} | undefined;
|
|
1064
1064
|
}>;
|
|
1065
|
-
export declare const developmentRuntimeSchema: z.ZodEffects<z.ZodObject<{
|
|
1066
|
-
schemaVersion: z.ZodLiteral<"treeseed.development-runtime/
|
|
1065
|
+
export declare const developmentRuntimeSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
|
|
1066
|
+
schemaVersion: z.ZodLiteral<"treeseed.development-runtime/v2">;
|
|
1067
1067
|
project: z.ZodObject<{
|
|
1068
1068
|
id: z.ZodString;
|
|
1069
1069
|
repository: z.ZodString;
|
|
@@ -1075,13 +1075,10 @@ export declare const developmentRuntimeSchema: z.ZodEffects<z.ZodObject<{
|
|
|
1075
1075
|
repository: string;
|
|
1076
1076
|
}>;
|
|
1077
1077
|
defaults: z.ZodObject<{
|
|
1078
|
-
leaseSeconds: z.ZodDefault<z.ZodNumber>;
|
|
1079
1078
|
restoreOnFailure: z.ZodDefault<z.ZodBoolean>;
|
|
1080
1079
|
}, "strict", z.ZodTypeAny, {
|
|
1081
|
-
leaseSeconds: number;
|
|
1082
1080
|
restoreOnFailure: boolean;
|
|
1083
1081
|
}, {
|
|
1084
|
-
leaseSeconds?: number | undefined;
|
|
1085
1082
|
restoreOnFailure?: boolean | undefined;
|
|
1086
1083
|
}>;
|
|
1087
1084
|
targets: z.ZodArray<z.ZodEffects<z.ZodObject<{
|
|
@@ -2148,7 +2145,7 @@ export declare const developmentRuntimeSchema: z.ZodEffects<z.ZodObject<{
|
|
|
2148
2145
|
id: string;
|
|
2149
2146
|
repository: string;
|
|
2150
2147
|
};
|
|
2151
|
-
schemaVersion: "treeseed.development-runtime/
|
|
2148
|
+
schemaVersion: "treeseed.development-runtime/v2";
|
|
2152
2149
|
targets: {
|
|
2153
2150
|
kind: "package-watch" | "live-web" | "live-api" | "rebuild-restart" | "local-companion";
|
|
2154
2151
|
resources: {
|
|
@@ -2289,7 +2286,6 @@ export declare const developmentRuntimeSchema: z.ZodEffects<z.ZodObject<{
|
|
|
2289
2286
|
} | undefined;
|
|
2290
2287
|
}[];
|
|
2291
2288
|
defaults: {
|
|
2292
|
-
leaseSeconds: number;
|
|
2293
2289
|
restoreOnFailure: boolean;
|
|
2294
2290
|
};
|
|
2295
2291
|
}, {
|
|
@@ -2297,7 +2293,7 @@ export declare const developmentRuntimeSchema: z.ZodEffects<z.ZodObject<{
|
|
|
2297
2293
|
id: string;
|
|
2298
2294
|
repository: string;
|
|
2299
2295
|
};
|
|
2300
|
-
schemaVersion: "treeseed.development-runtime/
|
|
2296
|
+
schemaVersion: "treeseed.development-runtime/v2";
|
|
2301
2297
|
targets: {
|
|
2302
2298
|
kind: "package-watch" | "live-web" | "live-api" | "rebuild-restart" | "local-companion";
|
|
2303
2299
|
id: string;
|
|
@@ -2438,7 +2434,6 @@ export declare const developmentRuntimeSchema: z.ZodEffects<z.ZodObject<{
|
|
|
2438
2434
|
} | undefined;
|
|
2439
2435
|
}[];
|
|
2440
2436
|
defaults: {
|
|
2441
|
-
leaseSeconds?: number | undefined;
|
|
2442
2437
|
restoreOnFailure?: boolean | undefined;
|
|
2443
2438
|
};
|
|
2444
2439
|
}>, {
|
|
@@ -2446,7 +2441,7 @@ export declare const developmentRuntimeSchema: z.ZodEffects<z.ZodObject<{
|
|
|
2446
2441
|
id: string;
|
|
2447
2442
|
repository: string;
|
|
2448
2443
|
};
|
|
2449
|
-
schemaVersion: "treeseed.development-runtime/
|
|
2444
|
+
schemaVersion: "treeseed.development-runtime/v2";
|
|
2450
2445
|
targets: {
|
|
2451
2446
|
kind: "package-watch" | "live-web" | "live-api" | "rebuild-restart" | "local-companion";
|
|
2452
2447
|
resources: {
|
|
@@ -2587,7 +2582,6 @@ export declare const developmentRuntimeSchema: z.ZodEffects<z.ZodObject<{
|
|
|
2587
2582
|
} | undefined;
|
|
2588
2583
|
}[];
|
|
2589
2584
|
defaults: {
|
|
2590
|
-
leaseSeconds: number;
|
|
2591
2585
|
restoreOnFailure: boolean;
|
|
2592
2586
|
};
|
|
2593
2587
|
}, {
|
|
@@ -2595,7 +2589,7 @@ export declare const developmentRuntimeSchema: z.ZodEffects<z.ZodObject<{
|
|
|
2595
2589
|
id: string;
|
|
2596
2590
|
repository: string;
|
|
2597
2591
|
};
|
|
2598
|
-
schemaVersion: "treeseed.development-runtime/
|
|
2592
|
+
schemaVersion: "treeseed.development-runtime/v2";
|
|
2599
2593
|
targets: {
|
|
2600
2594
|
kind: "package-watch" | "live-web" | "live-api" | "rebuild-restart" | "local-companion";
|
|
2601
2595
|
id: string;
|
|
@@ -2736,18 +2730,164 @@ export declare const developmentRuntimeSchema: z.ZodEffects<z.ZodObject<{
|
|
|
2736
2730
|
} | undefined;
|
|
2737
2731
|
}[];
|
|
2738
2732
|
defaults: {
|
|
2739
|
-
leaseSeconds?: number | undefined;
|
|
2740
2733
|
restoreOnFailure?: boolean | undefined;
|
|
2741
2734
|
};
|
|
2742
|
-
}
|
|
2743
|
-
|
|
2744
|
-
|
|
2735
|
+
}>, {
|
|
2736
|
+
project: {
|
|
2737
|
+
id: string;
|
|
2738
|
+
repository: string;
|
|
2739
|
+
};
|
|
2740
|
+
schemaVersion: "treeseed.development-runtime/v2";
|
|
2741
|
+
targets: {
|
|
2742
|
+
kind: "package-watch" | "live-web" | "live-api" | "rebuild-restart" | "local-companion";
|
|
2743
|
+
resources: {
|
|
2744
|
+
cpuCores?: number | undefined;
|
|
2745
|
+
memoryBytes?: number | undefined;
|
|
2746
|
+
diskBytes?: number | undefined;
|
|
2747
|
+
};
|
|
2748
|
+
id: string;
|
|
2749
|
+
ready: {
|
|
2750
|
+
path: string;
|
|
2751
|
+
kind: "marker";
|
|
2752
|
+
timeoutSeconds: number;
|
|
2753
|
+
} | {
|
|
2754
|
+
path: string;
|
|
2755
|
+
kind: "http";
|
|
2756
|
+
timeoutSeconds: number;
|
|
2757
|
+
expectedStatus: number;
|
|
2758
|
+
} | {
|
|
2759
|
+
kind: "tcp";
|
|
2760
|
+
timeoutSeconds: number;
|
|
2761
|
+
} | {
|
|
2762
|
+
kind: "process";
|
|
2763
|
+
graceSeconds: number;
|
|
2764
|
+
};
|
|
2765
|
+
platforms: ("linux-amd64" | "linux-arm64" | "darwin-arm64" | "darwin-amd64")[];
|
|
2766
|
+
runtimeRequirements: string[];
|
|
2767
|
+
sourceRoots: string[];
|
|
2768
|
+
ignoredPaths: string[];
|
|
2769
|
+
operations: {
|
|
2770
|
+
setup?: {
|
|
2771
|
+
command: string;
|
|
2772
|
+
args: string[];
|
|
2773
|
+
environment: Record<string, string>;
|
|
2774
|
+
timeoutSeconds: number;
|
|
2775
|
+
cwd?: string | undefined;
|
|
2776
|
+
} | undefined;
|
|
2777
|
+
watch?: {
|
|
2778
|
+
command: string;
|
|
2779
|
+
args: string[];
|
|
2780
|
+
environment: Record<string, string>;
|
|
2781
|
+
timeoutSeconds: number;
|
|
2782
|
+
cwd?: string | undefined;
|
|
2783
|
+
} | undefined;
|
|
2784
|
+
build?: {
|
|
2785
|
+
command: string;
|
|
2786
|
+
args: string[];
|
|
2787
|
+
environment: Record<string, string>;
|
|
2788
|
+
timeoutSeconds: number;
|
|
2789
|
+
cwd?: string | undefined;
|
|
2790
|
+
} | undefined;
|
|
2791
|
+
start?: {
|
|
2792
|
+
command: string;
|
|
2793
|
+
args: string[];
|
|
2794
|
+
environment: Record<string, string>;
|
|
2795
|
+
timeoutSeconds: number;
|
|
2796
|
+
cwd?: string | undefined;
|
|
2797
|
+
} | undefined;
|
|
2798
|
+
stop?: {
|
|
2799
|
+
command: string;
|
|
2800
|
+
args: string[];
|
|
2801
|
+
environment: Record<string, string>;
|
|
2802
|
+
timeoutSeconds: number;
|
|
2803
|
+
cwd?: string | undefined;
|
|
2804
|
+
} | undefined;
|
|
2805
|
+
verify?: {
|
|
2806
|
+
command: string;
|
|
2807
|
+
args: string[];
|
|
2808
|
+
environment: Record<string, string>;
|
|
2809
|
+
timeoutSeconds: number;
|
|
2810
|
+
cwd?: string | undefined;
|
|
2811
|
+
} | undefined;
|
|
2812
|
+
cleanup?: {
|
|
2813
|
+
command: string;
|
|
2814
|
+
args: string[];
|
|
2815
|
+
environment: Record<string, string>;
|
|
2816
|
+
timeoutSeconds: number;
|
|
2817
|
+
cwd?: string | undefined;
|
|
2818
|
+
} | undefined;
|
|
2819
|
+
};
|
|
2820
|
+
outputs: {
|
|
2821
|
+
path: string;
|
|
2822
|
+
mediaType: string;
|
|
2823
|
+
digestAlgorithm: "sha256";
|
|
2824
|
+
completionMarker?: string | undefined;
|
|
2825
|
+
}[];
|
|
2826
|
+
endpoints: {
|
|
2827
|
+
id: string;
|
|
2828
|
+
visibility: "private" | "host" | "loopback";
|
|
2829
|
+
protocol: "http" | "tcp" | "https";
|
|
2830
|
+
port: number;
|
|
2831
|
+
authentication: "none" | "application" | "mtls";
|
|
2832
|
+
canonicalAlias?: string | undefined;
|
|
2833
|
+
}[];
|
|
2834
|
+
dependencies: {
|
|
2835
|
+
id: string;
|
|
2836
|
+
target: string;
|
|
2837
|
+
locality: "remote" | "local" | "either";
|
|
2838
|
+
reaction: "reload" | "restart" | "rebuild" | "stale" | "manual" | "none";
|
|
2839
|
+
capability?: string | undefined;
|
|
2840
|
+
}[];
|
|
2841
|
+
statePolicy: "clone" | "stateless" | "ephemeral" | "shared-compatible";
|
|
2842
|
+
migrationPolicy: "none" | "explicit-review" | "disposable-only";
|
|
2843
|
+
secretRefs: Record<string, string>;
|
|
2844
|
+
shutdown: {
|
|
2845
|
+
graceSeconds: number;
|
|
2846
|
+
activeWorkPolicy: "block" | "drain" | "cancel-authorized";
|
|
2847
|
+
drainOperation?: {
|
|
2848
|
+
command: string;
|
|
2849
|
+
args: string[];
|
|
2850
|
+
environment: Record<string, string>;
|
|
2851
|
+
timeoutSeconds: number;
|
|
2852
|
+
cwd?: string | undefined;
|
|
2853
|
+
} | undefined;
|
|
2854
|
+
};
|
|
2855
|
+
logs: string[];
|
|
2856
|
+
forbiddenOperations: string[];
|
|
2857
|
+
promotion: {
|
|
2858
|
+
liveAdmissible: false;
|
|
2859
|
+
candidateRequiresVerification: true;
|
|
2860
|
+
};
|
|
2861
|
+
freeze?: {
|
|
2862
|
+
kind: "npm-package" | "oci-image" | "archive" | "executable";
|
|
2863
|
+
operation: {
|
|
2864
|
+
command: string;
|
|
2865
|
+
args: string[];
|
|
2866
|
+
environment: Record<string, string>;
|
|
2867
|
+
timeoutSeconds: number;
|
|
2868
|
+
cwd?: string | undefined;
|
|
2869
|
+
};
|
|
2870
|
+
artifacts: string[];
|
|
2871
|
+
contractOperations: {
|
|
2872
|
+
command: string;
|
|
2873
|
+
args: string[];
|
|
2874
|
+
environment: Record<string, string>;
|
|
2875
|
+
timeoutSeconds: number;
|
|
2876
|
+
cwd?: string | undefined;
|
|
2877
|
+
}[];
|
|
2878
|
+
} | undefined;
|
|
2879
|
+
}[];
|
|
2880
|
+
defaults: {
|
|
2881
|
+
restoreOnFailure: boolean;
|
|
2882
|
+
};
|
|
2883
|
+
}, unknown>;
|
|
2884
|
+
export declare const developmentSessionSchema: z.ZodEffects<z.ZodObject<{
|
|
2885
|
+
schemaVersion: z.ZodLiteral<"treeseed.development-session/v2">;
|
|
2745
2886
|
sessionId: z.ZodString;
|
|
2746
2887
|
actor: z.ZodString;
|
|
2747
2888
|
hostId: z.ZodString;
|
|
2748
2889
|
createdAt: z.ZodString;
|
|
2749
|
-
|
|
2750
|
-
status: z.ZodEnum<["planning", "active", "degraded", "restoring", "stopped", "expired"]>;
|
|
2890
|
+
status: z.ZodEnum<["planning", "active", "degraded", "restoring", "stopped"]>;
|
|
2751
2891
|
repositories: z.ZodArray<z.ZodObject<{
|
|
2752
2892
|
projectId: z.ZodString;
|
|
2753
2893
|
repository: z.ZodString;
|
|
@@ -2788,29 +2928,26 @@ export declare const developmentSessionSchema: z.ZodObject<{
|
|
|
2788
2928
|
mode: "released" | "candidate" | "live";
|
|
2789
2929
|
targetId: string;
|
|
2790
2930
|
generation: number;
|
|
2791
|
-
health: "ready" | "
|
|
2931
|
+
health: "ready" | "stopped" | "degraded" | "pending";
|
|
2792
2932
|
reaction?: "reload" | "restart" | "rebuild" | "stale" | "manual" | "none" | undefined;
|
|
2793
2933
|
}, {
|
|
2794
2934
|
projectId: string;
|
|
2795
2935
|
mode: "released" | "candidate" | "live";
|
|
2796
2936
|
targetId: string;
|
|
2797
2937
|
generation: number;
|
|
2798
|
-
health: "ready" | "
|
|
2938
|
+
health: "ready" | "stopped" | "degraded" | "pending";
|
|
2799
2939
|
reaction?: "reload" | "restart" | "rebuild" | "stale" | "manual" | "none" | undefined;
|
|
2800
2940
|
}>, "many">;
|
|
2801
2941
|
leases: z.ZodArray<z.ZodObject<{
|
|
2802
2942
|
kind: z.ZodEnum<["alias", "component", "state", "secret"]>;
|
|
2803
2943
|
resource: z.ZodString;
|
|
2804
2944
|
acquiredAt: z.ZodString;
|
|
2805
|
-
expiresAt: z.ZodString;
|
|
2806
2945
|
}, "strict", z.ZodTypeAny, {
|
|
2807
2946
|
kind: "state" | "alias" | "component" | "secret";
|
|
2808
|
-
expiresAt: string;
|
|
2809
2947
|
resource: string;
|
|
2810
2948
|
acquiredAt: string;
|
|
2811
2949
|
}, {
|
|
2812
2950
|
kind: "state" | "alias" | "component" | "secret";
|
|
2813
|
-
expiresAt: string;
|
|
2814
2951
|
resource: string;
|
|
2815
2952
|
acquiredAt: string;
|
|
2816
2953
|
}>, "many">;
|
|
@@ -2829,8 +2966,8 @@ export declare const developmentSessionSchema: z.ZodObject<{
|
|
|
2829
2966
|
targetId?: string | undefined;
|
|
2830
2967
|
}>, "many">;
|
|
2831
2968
|
}, "strict", z.ZodTypeAny, {
|
|
2832
|
-
status: "
|
|
2833
|
-
schemaVersion: "treeseed.development-session/
|
|
2969
|
+
status: "stopped" | "planning" | "active" | "degraded" | "restoring";
|
|
2970
|
+
schemaVersion: "treeseed.development-session/v2";
|
|
2834
2971
|
repositories: {
|
|
2835
2972
|
dirty: boolean;
|
|
2836
2973
|
repository: string;
|
|
@@ -2846,7 +2983,7 @@ export declare const developmentSessionSchema: z.ZodObject<{
|
|
|
2846
2983
|
mode: "released" | "candidate" | "live";
|
|
2847
2984
|
targetId: string;
|
|
2848
2985
|
generation: number;
|
|
2849
|
-
health: "ready" | "
|
|
2986
|
+
health: "ready" | "stopped" | "degraded" | "pending";
|
|
2850
2987
|
reaction?: "reload" | "restart" | "rebuild" | "stale" | "manual" | "none" | undefined;
|
|
2851
2988
|
}[];
|
|
2852
2989
|
blockers: {
|
|
@@ -2855,20 +2992,18 @@ export declare const developmentSessionSchema: z.ZodObject<{
|
|
|
2855
2992
|
targetId?: string | undefined;
|
|
2856
2993
|
}[];
|
|
2857
2994
|
createdAt: string;
|
|
2858
|
-
expiresAt: string;
|
|
2859
|
-
sessionId: string;
|
|
2860
|
-
actor: string;
|
|
2861
|
-
hostId: string;
|
|
2862
2995
|
leases: {
|
|
2863
2996
|
kind: "state" | "alias" | "component" | "secret";
|
|
2864
|
-
expiresAt: string;
|
|
2865
2997
|
resource: string;
|
|
2866
2998
|
acquiredAt: string;
|
|
2867
2999
|
}[];
|
|
3000
|
+
sessionId: string;
|
|
3001
|
+
actor: string;
|
|
3002
|
+
hostId: string;
|
|
2868
3003
|
restoredReceiptId: string | null;
|
|
2869
3004
|
}, {
|
|
2870
|
-
status: "
|
|
2871
|
-
schemaVersion: "treeseed.development-session/
|
|
3005
|
+
status: "stopped" | "planning" | "active" | "degraded" | "restoring";
|
|
3006
|
+
schemaVersion: "treeseed.development-session/v2";
|
|
2872
3007
|
repositories: {
|
|
2873
3008
|
dirty: boolean;
|
|
2874
3009
|
repository: string;
|
|
@@ -2884,7 +3019,7 @@ export declare const developmentSessionSchema: z.ZodObject<{
|
|
|
2884
3019
|
mode: "released" | "candidate" | "live";
|
|
2885
3020
|
targetId: string;
|
|
2886
3021
|
generation: number;
|
|
2887
|
-
health: "ready" | "
|
|
3022
|
+
health: "ready" | "stopped" | "degraded" | "pending";
|
|
2888
3023
|
reaction?: "reload" | "restart" | "rebuild" | "stale" | "manual" | "none" | undefined;
|
|
2889
3024
|
}[];
|
|
2890
3025
|
blockers: {
|
|
@@ -2893,18 +3028,52 @@ export declare const developmentSessionSchema: z.ZodObject<{
|
|
|
2893
3028
|
targetId?: string | undefined;
|
|
2894
3029
|
}[];
|
|
2895
3030
|
createdAt: string;
|
|
2896
|
-
|
|
3031
|
+
leases: {
|
|
3032
|
+
kind: "state" | "alias" | "component" | "secret";
|
|
3033
|
+
resource: string;
|
|
3034
|
+
acquiredAt: string;
|
|
3035
|
+
}[];
|
|
2897
3036
|
sessionId: string;
|
|
2898
3037
|
actor: string;
|
|
2899
3038
|
hostId: string;
|
|
3039
|
+
restoredReceiptId: string | null;
|
|
3040
|
+
}>, {
|
|
3041
|
+
status: "stopped" | "planning" | "active" | "degraded" | "restoring";
|
|
3042
|
+
schemaVersion: "treeseed.development-session/v2";
|
|
3043
|
+
repositories: {
|
|
3044
|
+
dirty: boolean;
|
|
3045
|
+
repository: string;
|
|
3046
|
+
branch: string | null;
|
|
3047
|
+
commit: string;
|
|
3048
|
+
projectId: string;
|
|
3049
|
+
worktree: string;
|
|
3050
|
+
dirtyDigest: string | null;
|
|
3051
|
+
recipeDigest: string;
|
|
3052
|
+
}[];
|
|
3053
|
+
targets: {
|
|
3054
|
+
projectId: string;
|
|
3055
|
+
mode: "released" | "candidate" | "live";
|
|
3056
|
+
targetId: string;
|
|
3057
|
+
generation: number;
|
|
3058
|
+
health: "ready" | "stopped" | "degraded" | "pending";
|
|
3059
|
+
reaction?: "reload" | "restart" | "rebuild" | "stale" | "manual" | "none" | undefined;
|
|
3060
|
+
}[];
|
|
3061
|
+
blockers: {
|
|
3062
|
+
code: string;
|
|
3063
|
+
message: string;
|
|
3064
|
+
targetId?: string | undefined;
|
|
3065
|
+
}[];
|
|
3066
|
+
createdAt: string;
|
|
2900
3067
|
leases: {
|
|
2901
3068
|
kind: "state" | "alias" | "component" | "secret";
|
|
2902
|
-
expiresAt: string;
|
|
2903
3069
|
resource: string;
|
|
2904
3070
|
acquiredAt: string;
|
|
2905
3071
|
}[];
|
|
3072
|
+
sessionId: string;
|
|
3073
|
+
actor: string;
|
|
3074
|
+
hostId: string;
|
|
2906
3075
|
restoredReceiptId: string | null;
|
|
2907
|
-
}>;
|
|
3076
|
+
}, unknown>;
|
|
2908
3077
|
export declare const developmentCandidateSchema: z.ZodEffects<z.ZodObject<{
|
|
2909
3078
|
schemaVersion: z.ZodLiteral<"treeseed.development-candidate/v1">;
|
|
2910
3079
|
candidateId: z.ZodString;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { migrateDevelopmentRuntime, migrateDevelopmentSession } from "./session-migration.js";
|
|
2
3
|
const identifier = z.string().regex(/^[a-z][a-z0-9.-]{1,63}$/u);
|
|
3
4
|
const digest = z.string().regex(/^sha256:[a-f0-9]{64}$/u);
|
|
4
5
|
const gitCommit = z.string().regex(/^[a-f0-9]{40}$/u);
|
|
@@ -92,15 +93,15 @@ const developmentTargetSchema = z.object({
|
|
|
92
93
|
if (target.kind !== "package-watch" && target.ready.kind === "marker") context.addIssue({ code: z.ZodIssueCode.custom, path: ["ready"], message: "Service targets require process, TCP, or HTTP readiness." });
|
|
93
94
|
if (target.statePolicy === "shared-compatible" && target.migrationPolicy !== "explicit-review") context.addIssue({ code: z.ZodIssueCode.custom, path: ["migrationPolicy"], message: "Shared state requires explicit migration review." });
|
|
94
95
|
});
|
|
95
|
-
const developmentRuntimeSchema = z.object({
|
|
96
|
-
schemaVersion: z.literal("treeseed.development-runtime/
|
|
96
|
+
const developmentRuntimeSchema = z.preprocess(migrateDevelopmentRuntime, z.object({
|
|
97
|
+
schemaVersion: z.literal("treeseed.development-runtime/v2"),
|
|
97
98
|
project: z.object({ id: identifier, repository: z.string().regex(/^[a-z0-9_.-]+\/[a-z0-9_.-]+$/iu) }).strict(),
|
|
98
|
-
defaults: z.object({
|
|
99
|
+
defaults: z.object({ restoreOnFailure: z.boolean().default(true) }).strict(),
|
|
99
100
|
targets: z.array(developmentTargetSchema).min(1)
|
|
100
101
|
}).strict().superRefine((runtime, context) => {
|
|
101
102
|
const ids = runtime.targets.map((target) => target.id);
|
|
102
103
|
if (new Set(ids).size !== ids.length) context.addIssue({ code: z.ZodIssueCode.custom, path: ["targets"], message: "Development target IDs must be unique." });
|
|
103
|
-
});
|
|
104
|
+
}));
|
|
104
105
|
const repositoryClosureSchema = z.object({
|
|
105
106
|
projectId: identifier,
|
|
106
107
|
repository: z.string().min(1),
|
|
@@ -111,20 +112,19 @@ const repositoryClosureSchema = z.object({
|
|
|
111
112
|
dirtyDigest: digest.nullable(),
|
|
112
113
|
recipeDigest: digest
|
|
113
114
|
}).strict();
|
|
114
|
-
const developmentSessionSchema = z.object({
|
|
115
|
-
schemaVersion: z.literal("treeseed.development-session/
|
|
115
|
+
const developmentSessionSchema = z.preprocess(migrateDevelopmentSession, z.object({
|
|
116
|
+
schemaVersion: z.literal("treeseed.development-session/v2"),
|
|
116
117
|
sessionId: identifier,
|
|
117
118
|
actor: z.string().min(1).max(256),
|
|
118
119
|
hostId: identifier,
|
|
119
120
|
createdAt: z.string().datetime(),
|
|
120
|
-
|
|
121
|
-
status: z.enum(["planning", "active", "degraded", "restoring", "stopped", "expired"]),
|
|
121
|
+
status: z.enum(["planning", "active", "degraded", "restoring", "stopped"]),
|
|
122
122
|
repositories: z.array(repositoryClosureSchema),
|
|
123
123
|
targets: z.array(z.object({ projectId: identifier, targetId: identifier, mode: developmentModeSchema, generation: z.number().int().nonnegative(), health: z.enum(["pending", "ready", "degraded", "stopped"]), reaction: developmentReactionSchema.optional() }).strict()),
|
|
124
|
-
leases: z.array(z.object({ kind: z.enum(["alias", "component", "state", "secret"]), resource: z.string().min(1), acquiredAt: z.string().datetime()
|
|
124
|
+
leases: z.array(z.object({ kind: z.enum(["alias", "component", "state", "secret"]), resource: z.string().min(1), acquiredAt: z.string().datetime() }).strict()),
|
|
125
125
|
restoredReceiptId: identifier.nullable(),
|
|
126
126
|
blockers: z.array(z.object({ code: identifier, message: z.string().min(1), targetId: identifier.optional() }).strict())
|
|
127
|
-
}).strict();
|
|
127
|
+
}).strict());
|
|
128
128
|
const developmentCandidateSchema = z.object({
|
|
129
129
|
schemaVersion: z.literal("treeseed.development-candidate/v1"),
|
|
130
130
|
candidateId: identifier,
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
function migrateDevelopmentRuntime(value) {
|
|
2
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return value;
|
|
3
|
+
const record = value;
|
|
4
|
+
if (record.schemaVersion !== "treeseed.development-runtime/v1") return value;
|
|
5
|
+
const defaults = record.defaults;
|
|
6
|
+
if (!defaults || typeof defaults !== "object" || Array.isArray(defaults)) return value;
|
|
7
|
+
const { leaseSeconds: retired, ...persistentDefaults } = defaults;
|
|
8
|
+
return { ...record, schemaVersion: "treeseed.development-runtime/v2", defaults: persistentDefaults };
|
|
9
|
+
}
|
|
10
|
+
function migrateDevelopmentSession(value) {
|
|
11
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return value;
|
|
12
|
+
const record = value;
|
|
13
|
+
if (record.schemaVersion !== "treeseed.development-session/v1") return value;
|
|
14
|
+
const { expiresAt: retired, ...persistent } = record;
|
|
15
|
+
const leases = Array.isArray(record.leases) ? record.leases.map((value2) => {
|
|
16
|
+
if (!value2 || typeof value2 !== "object" || Array.isArray(value2)) return value2;
|
|
17
|
+
const { expiresAt: retired2, ...lease } = value2;
|
|
18
|
+
return lease;
|
|
19
|
+
}) : record.leases;
|
|
20
|
+
return { ...persistent, schemaVersion: "treeseed.development-session/v2", status: record.status === "expired" ? "stopped" : record.status, leases };
|
|
21
|
+
}
|
|
22
|
+
export {
|
|
23
|
+
migrateDevelopmentRuntime,
|
|
24
|
+
migrateDevelopmentSession
|
|
25
|
+
};
|
|
@@ -387,14 +387,14 @@ const commandTree = {
|
|
|
387
387
|
])
|
|
388
388
|
]),
|
|
389
389
|
branch("session", [
|
|
390
|
-
developmentCommand("start", "mutation", "manifest", [{ name: "--actor", description: "Audited development-session actor.", type: "string" }
|
|
390
|
+
developmentCommand("start", "mutation", "manifest", [{ name: "--actor", description: "Audited development-session actor.", type: "string" }]),
|
|
391
391
|
developmentCommand("stop", "mutation", void 0, [{ name: "--session", description: "Development session identity.", type: "string" }, { name: "--restore", description: "Restore released routes and targets.", type: "boolean" }]),
|
|
392
392
|
developmentCommand("recover", "mutation", void 0, [{ name: "--session", description: "Exact manager session whose local custody should be recovered.", type: "string", required: true }])
|
|
393
393
|
]),
|
|
394
394
|
developmentCommand("use", "mutation", "selection", [{ name: "--session", description: "Development session identity.", type: "string" }, { name: "--target", description: "Additional project.target=mode selections.", type: "string[]" }]),
|
|
395
395
|
developmentCommand("rebuild", "mutation", "target", [{ name: "--session", description: "Development session identity.", type: "string" }]),
|
|
396
396
|
developmentCommand("restart", "mutation", "target", [{ name: "--session", description: "Development session identity.", type: "string" }]),
|
|
397
|
-
developmentCommand("status", "read", void 0, [{ name: "--session", description: "Development session identity.", type: "string" }, { name: "--all", description: "Include stopped
|
|
397
|
+
developmentCommand("status", "read", void 0, [{ name: "--session", description: "Development session identity.", type: "string" }, { name: "--all", description: "Include stopped sessions.", type: "boolean" }]),
|
|
398
398
|
developmentCommand("logs", "read", void 0, [{ name: "--session", description: "Development session identity.", type: "string" }, { name: "--target", description: "Development target identity.", type: "string" }, { name: "--follow", description: "Follow target logs.", type: "boolean" }]),
|
|
399
399
|
developmentCommand("plan", "read", void 0, [{ name: "--session", description: "Development session identity.", type: "string" }, { name: "--affected", description: "Show the smallest affected closure.", type: "boolean" }]),
|
|
400
400
|
developmentCommand("freeze", "mutation", void 0, [{ name: "--session", description: "Development session identity.", type: "string" }, { name: "--allow-dirty", description: "Create a non-promotable dirty-source candidate.", type: "boolean" }]),
|
|
@@ -4,7 +4,7 @@ export declare function knowledgeShareOperations(): {
|
|
|
4
4
|
teamId: string;
|
|
5
5
|
}, {}, undefined, {
|
|
6
6
|
items: {
|
|
7
|
-
status: "revoked" | "
|
|
7
|
+
status: "revoked" | "expired" | "active";
|
|
8
8
|
schemaVersion: "treeseed.knowledge-share/v1";
|
|
9
9
|
id: string;
|
|
10
10
|
createdAt: string;
|
|
@@ -23,7 +23,7 @@ export declare function knowledgeShareOperations(): {
|
|
|
23
23
|
teamId: string;
|
|
24
24
|
shareId: string;
|
|
25
25
|
}, {}, undefined, {
|
|
26
|
-
status: "revoked" | "
|
|
26
|
+
status: "revoked" | "expired" | "active";
|
|
27
27
|
schemaVersion: "treeseed.knowledge-share/v1";
|
|
28
28
|
id: string;
|
|
29
29
|
createdAt: string;
|
|
@@ -47,7 +47,7 @@ export declare function knowledgeShareOperations(): {
|
|
|
47
47
|
paths?: string[] | undefined;
|
|
48
48
|
contentModels?: string[] | undefined;
|
|
49
49
|
}, {
|
|
50
|
-
status: "revoked" | "
|
|
50
|
+
status: "revoked" | "expired" | "active";
|
|
51
51
|
schemaVersion: "treeseed.knowledge-share/v1";
|
|
52
52
|
id: string;
|
|
53
53
|
createdAt: string;
|
|
@@ -65,7 +65,7 @@ export declare function knowledgeShareOperations(): {
|
|
|
65
65
|
teamId: string;
|
|
66
66
|
shareId: string;
|
|
67
67
|
}, {}, {}, {
|
|
68
|
-
status: "revoked" | "
|
|
68
|
+
status: "revoked" | "expired" | "active";
|
|
69
69
|
schemaVersion: "treeseed.knowledge-share/v1";
|
|
70
70
|
id: string;
|
|
71
71
|
createdAt: string;
|
|
@@ -1104,7 +1104,7 @@ export declare const CONTROL_PLANE_OPERATIONS: {
|
|
|
1104
1104
|
teamId: string;
|
|
1105
1105
|
}, {}, undefined, {
|
|
1106
1106
|
items: {
|
|
1107
|
-
status: "revoked" | "
|
|
1107
|
+
status: "revoked" | "expired" | "active";
|
|
1108
1108
|
schemaVersion: "treeseed.knowledge-share/v1";
|
|
1109
1109
|
id: string;
|
|
1110
1110
|
createdAt: string;
|
|
@@ -1123,7 +1123,7 @@ export declare const CONTROL_PLANE_OPERATIONS: {
|
|
|
1123
1123
|
teamId: string;
|
|
1124
1124
|
shareId: string;
|
|
1125
1125
|
}, {}, undefined, {
|
|
1126
|
-
status: "revoked" | "
|
|
1126
|
+
status: "revoked" | "expired" | "active";
|
|
1127
1127
|
schemaVersion: "treeseed.knowledge-share/v1";
|
|
1128
1128
|
id: string;
|
|
1129
1129
|
createdAt: string;
|
|
@@ -1147,7 +1147,7 @@ export declare const CONTROL_PLANE_OPERATIONS: {
|
|
|
1147
1147
|
paths?: string[] | undefined;
|
|
1148
1148
|
contentModels?: string[] | undefined;
|
|
1149
1149
|
}, {
|
|
1150
|
-
status: "revoked" | "
|
|
1150
|
+
status: "revoked" | "expired" | "active";
|
|
1151
1151
|
schemaVersion: "treeseed.knowledge-share/v1";
|
|
1152
1152
|
id: string;
|
|
1153
1153
|
createdAt: string;
|
|
@@ -1165,7 +1165,7 @@ export declare const CONTROL_PLANE_OPERATIONS: {
|
|
|
1165
1165
|
teamId: string;
|
|
1166
1166
|
shareId: string;
|
|
1167
1167
|
}, {}, {}, {
|
|
1168
|
-
status: "revoked" | "
|
|
1168
|
+
status: "revoked" | "expired" | "active";
|
|
1169
1169
|
schemaVersion: "treeseed.knowledge-share/v1";
|
|
1170
1170
|
id: string;
|
|
1171
1171
|
createdAt: string;
|
|
@@ -38,7 +38,7 @@ export declare const knowledgeShareSchema: z.ZodEffects<z.ZodObject<{
|
|
|
38
38
|
updatedAt: z.ZodString;
|
|
39
39
|
revokedAt: z.ZodNullable<z.ZodString>;
|
|
40
40
|
}, "strict", z.ZodTypeAny, {
|
|
41
|
-
status: "revoked" | "
|
|
41
|
+
status: "revoked" | "expired" | "active";
|
|
42
42
|
schemaVersion: "treeseed.knowledge-share/v1";
|
|
43
43
|
id: string;
|
|
44
44
|
createdAt: string;
|
|
@@ -52,7 +52,7 @@ export declare const knowledgeShareSchema: z.ZodEffects<z.ZodObject<{
|
|
|
52
52
|
sourceTeamId: string;
|
|
53
53
|
revokedAt: string | null;
|
|
54
54
|
}, {
|
|
55
|
-
status: "revoked" | "
|
|
55
|
+
status: "revoked" | "expired" | "active";
|
|
56
56
|
schemaVersion: "treeseed.knowledge-share/v1";
|
|
57
57
|
id: string;
|
|
58
58
|
createdAt: string;
|
|
@@ -66,7 +66,7 @@ export declare const knowledgeShareSchema: z.ZodEffects<z.ZodObject<{
|
|
|
66
66
|
paths?: string[] | undefined;
|
|
67
67
|
contentModels?: string[] | undefined;
|
|
68
68
|
}>, {
|
|
69
|
-
status: "revoked" | "
|
|
69
|
+
status: "revoked" | "expired" | "active";
|
|
70
70
|
schemaVersion: "treeseed.knowledge-share/v1";
|
|
71
71
|
id: string;
|
|
72
72
|
createdAt: string;
|
|
@@ -80,7 +80,7 @@ export declare const knowledgeShareSchema: z.ZodEffects<z.ZodObject<{
|
|
|
80
80
|
sourceTeamId: string;
|
|
81
81
|
revokedAt: string | null;
|
|
82
82
|
}, {
|
|
83
|
-
status: "revoked" | "
|
|
83
|
+
status: "revoked" | "expired" | "active";
|
|
84
84
|
schemaVersion: "treeseed.knowledge-share/v1";
|
|
85
85
|
id: string;
|
|
86
86
|
createdAt: string;
|