@cleocode/contracts 2026.4.141 → 2026.4.143
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/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/operations/admin.d.ts +70 -0
- package/dist/operations/admin.d.ts.map +1 -1
- package/dist/operations/conduit.d.ts +37 -6
- package/dist/operations/conduit.d.ts.map +1 -1
- package/dist/operations/conduit.js +16 -6
- package/dist/operations/conduit.js.map +1 -1
- package/dist/operations/index.d.ts +1 -0
- package/dist/operations/index.d.ts.map +1 -1
- package/dist/operations/index.js +1 -0
- package/dist/operations/index.js.map +1 -1
- package/dist/operations/nexus.d.ts +257 -5
- package/dist/operations/nexus.d.ts.map +1 -1
- package/dist/operations/release.d.ts +79 -0
- package/dist/operations/release.d.ts.map +1 -1
- package/dist/operations/sentient.d.ts +166 -0
- package/dist/operations/sentient.d.ts.map +1 -0
- package/dist/operations/sentient.js +15 -0
- package/dist/operations/sentient.js.map +1 -0
- package/dist/operations/tasks.d.ts +242 -0
- package/dist/operations/tasks.d.ts.map +1 -1
- package/dist/operations/validate.d.ts +41 -0
- package/dist/operations/validate.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +114 -0
- package/src/operations/admin.ts +88 -0
- package/src/operations/conduit.ts +42 -6
- package/src/operations/index.ts +1 -0
- package/src/operations/nexus.ts +301 -5
- package/src/operations/release.ts +87 -0
- package/src/operations/sentient.ts +208 -0
- package/src/operations/tasks.ts +307 -0
- package/src/operations/validate.ts +46 -0
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Conduit Domain Operations (5
|
|
2
|
+
* Conduit Domain Operations (8 operations: 3 query, 5 mutate)
|
|
3
3
|
*
|
|
4
|
-
* Query operations:
|
|
5
|
-
*
|
|
4
|
+
* Query operations: 3
|
|
5
|
+
* - conduit.status — connection status + unread count
|
|
6
|
+
* - conduit.peek — one-shot poll for messages
|
|
7
|
+
* - conduit.listen — one-shot poll for topic messages (A2A, T1252)
|
|
8
|
+
* Mutate operations: 5
|
|
9
|
+
* - conduit.start — start continuous polling
|
|
10
|
+
* - conduit.stop — stop polling
|
|
11
|
+
* - conduit.send — send a message
|
|
12
|
+
* - conduit.subscribe — subscribe agent to a topic (A2A, T1252)
|
|
13
|
+
* - conduit.publish — publish message to a topic (A2A, T1252)
|
|
6
14
|
*
|
|
7
15
|
* CONDUIT is the agent-to-agent messaging subsystem. The protocol wraps a
|
|
8
16
|
* pluggable Transport (HTTP to cloud SignalDock, LocalTransport over
|
|
@@ -16,12 +24,14 @@
|
|
|
16
24
|
*
|
|
17
25
|
* Registry note (T964 — supersedes ADR-042 Decision 1): the dispatcher
|
|
18
26
|
* registers these operations under `domain: 'conduit'` with short operation
|
|
19
|
-
* names (`status`, `peek`, `start`, `stop`, `send`
|
|
20
|
-
* `conduit.<op>` remains the stable
|
|
21
|
-
* contracts describe; CLI and HTTP adapters
|
|
27
|
+
* names (`status`, `peek`, `start`, `stop`, `send`, `subscribe`, `publish`,
|
|
28
|
+
* `listen`). The public/HTTP identifier `conduit.<op>` remains the stable
|
|
29
|
+
* wire-format surface and what these contracts describe; CLI and HTTP adapters
|
|
30
|
+
* map between the two forms.
|
|
22
31
|
*
|
|
23
32
|
* @task T910 — Orchestration Coherence v4 (contract surface completion)
|
|
24
33
|
* @task T964 — CONDUIT promotion to canonical domain #15
|
|
34
|
+
* @task T1422 — Typed-dispatch migration (Wave D, T975 follow-on)
|
|
25
35
|
* @see packages/cleo/src/dispatch/domains/conduit.ts
|
|
26
36
|
* @see packages/contracts/src/conduit.ts
|
|
27
37
|
*/
|
|
@@ -297,3 +307,29 @@ export interface ConduitListenResult {
|
|
|
297
307
|
/** Duration of the listen call in milliseconds. */
|
|
298
308
|
listenedForMs: number;
|
|
299
309
|
}
|
|
310
|
+
|
|
311
|
+
// ============================================================================
|
|
312
|
+
// Typed Operation Record (T1422 — Wave D typed-dispatch)
|
|
313
|
+
// ============================================================================
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* Typed operation record for the conduit domain.
|
|
317
|
+
*
|
|
318
|
+
* Each key is an operation name, and each value is a tuple of
|
|
319
|
+
* `[Params, Result]` types. Used by the typed dispatch adapter
|
|
320
|
+
* (`packages/cleo/src/dispatch/adapters/typed.ts`) to provide
|
|
321
|
+
* compile-time narrowing on all conduit handler params.
|
|
322
|
+
*
|
|
323
|
+
* @task T1422 — Typed-dispatch migration (T975 follow-on)
|
|
324
|
+
* @see packages/cleo/src/dispatch/domains/conduit.ts (ConduitHandler)
|
|
325
|
+
*/
|
|
326
|
+
export type ConduitOps = {
|
|
327
|
+
status: [ConduitStatusParams, ConduitStatusResult];
|
|
328
|
+
peek: [ConduitPeekParams, ConduitPeekResult];
|
|
329
|
+
listen: [ConduitListenParams, ConduitListenResult];
|
|
330
|
+
start: [ConduitStartParams, ConduitStartResult];
|
|
331
|
+
stop: [ConduitStopParams, ConduitStopResult];
|
|
332
|
+
send: [ConduitSendParams, ConduitSendResult];
|
|
333
|
+
subscribe: [ConduitSubscribeParams, ConduitSubscribeResult];
|
|
334
|
+
publish: [ConduitPublishParams, ConduitPublishResult];
|
|
335
|
+
};
|
package/src/operations/index.ts
CHANGED
|
@@ -17,6 +17,7 @@ export * from './orchestrate.js';
|
|
|
17
17
|
export * from './params.js';
|
|
18
18
|
export * from './release.js';
|
|
19
19
|
export * from './research.js';
|
|
20
|
+
export * from './sentient.js';
|
|
20
21
|
export * from './session.js';
|
|
21
22
|
export * from './skills.js';
|
|
22
23
|
export * from './system.js';
|
package/src/operations/nexus.ts
CHANGED
|
@@ -19,7 +19,23 @@
|
|
|
19
19
|
* @see packages/cleo/src/dispatch/domains/nexus.ts
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
// Profile types are now canonical in nexus-user-profile.ts (T1424 dedup)
|
|
23
|
+
import type {
|
|
24
|
+
NexusProfileExportParams,
|
|
25
|
+
NexusProfileExportResult,
|
|
26
|
+
NexusProfileGetParams,
|
|
27
|
+
NexusProfileGetResult,
|
|
28
|
+
NexusProfileImportParams,
|
|
29
|
+
NexusProfileImportResult,
|
|
30
|
+
NexusProfileReinforceParams,
|
|
31
|
+
NexusProfileReinforceResult,
|
|
32
|
+
NexusProfileSupersedeParams,
|
|
33
|
+
NexusProfileSupersedeResult,
|
|
34
|
+
NexusProfileUpsertParams,
|
|
35
|
+
NexusProfileUpsertResult,
|
|
36
|
+
NexusProfileViewParams,
|
|
37
|
+
NexusProfileViewResult,
|
|
38
|
+
} from './nexus-user-profile.js';
|
|
23
39
|
|
|
24
40
|
// ============================================================================
|
|
25
41
|
// Shared Nexus wire-format types
|
|
@@ -272,8 +288,6 @@ export interface NexusListResult {
|
|
|
272
288
|
total: number;
|
|
273
289
|
/** Filtered count (post-limit). */
|
|
274
290
|
filtered: number;
|
|
275
|
-
/** Pagination descriptor. */
|
|
276
|
-
page: LAFSPage;
|
|
277
291
|
}
|
|
278
292
|
|
|
279
293
|
// --------------------------------------------------------------------------
|
|
@@ -416,8 +430,6 @@ export interface NexusOrphansListResult {
|
|
|
416
430
|
total: number;
|
|
417
431
|
/** Filtered count. */
|
|
418
432
|
filtered: number;
|
|
419
|
-
/** Pagination descriptor. */
|
|
420
|
-
page: LAFSPage;
|
|
421
433
|
}
|
|
422
434
|
|
|
423
435
|
// --------------------------------------------------------------------------
|
|
@@ -709,3 +721,287 @@ export interface NexusTransferResult {
|
|
|
709
721
|
/** Manifest describing what was moved. */
|
|
710
722
|
manifest: NexusTransferManifest;
|
|
711
723
|
}
|
|
724
|
+
|
|
725
|
+
// ============================================================================
|
|
726
|
+
// Additional operations (T1424 — typed narrowing stub types)
|
|
727
|
+
// ============================================================================
|
|
728
|
+
|
|
729
|
+
/** Parameters for `nexus.augment`. */
|
|
730
|
+
export interface NexusAugmentParams {
|
|
731
|
+
/** Search pattern (required). */
|
|
732
|
+
pattern: string;
|
|
733
|
+
/** Max results (default 5). */
|
|
734
|
+
limit?: number;
|
|
735
|
+
}
|
|
736
|
+
/** Result of `nexus.augment`. */
|
|
737
|
+
export type NexusAugmentResult = unknown;
|
|
738
|
+
|
|
739
|
+
/** Parameters for `nexus.top-entries`. */
|
|
740
|
+
export interface NexusTopEntriesParams {
|
|
741
|
+
/** Max results (default 20). */
|
|
742
|
+
limit?: number;
|
|
743
|
+
/** Optional kind filter (nexus.db sources). */
|
|
744
|
+
kind?: string;
|
|
745
|
+
/** Optional nodeType filter (brain.db page_nodes). */
|
|
746
|
+
nodeType?: string;
|
|
747
|
+
}
|
|
748
|
+
/** Entry from brain.db. */
|
|
749
|
+
export interface BrainPageNodeEntry {
|
|
750
|
+
id: string;
|
|
751
|
+
node_type: string;
|
|
752
|
+
label: string;
|
|
753
|
+
quality_score: number;
|
|
754
|
+
last_activity_at: string;
|
|
755
|
+
metadata_json: string | null;
|
|
756
|
+
}
|
|
757
|
+
/** Entry from nexus.db. */
|
|
758
|
+
export interface NexusTopEntry {
|
|
759
|
+
nodeId: string;
|
|
760
|
+
label: string;
|
|
761
|
+
kind: string;
|
|
762
|
+
filePath: string | null;
|
|
763
|
+
totalWeight: number;
|
|
764
|
+
edgeCount: number;
|
|
765
|
+
}
|
|
766
|
+
/** Result of `nexus.top-entries`. */
|
|
767
|
+
export interface NexusTopEntriesResult {
|
|
768
|
+
entries: BrainPageNodeEntry[] | NexusTopEntry[];
|
|
769
|
+
count: number;
|
|
770
|
+
limit: number;
|
|
771
|
+
kind?: string | null;
|
|
772
|
+
nodeType?: string | null;
|
|
773
|
+
note?: string;
|
|
774
|
+
}
|
|
775
|
+
|
|
776
|
+
/** Parameters for `nexus.impact`. */
|
|
777
|
+
export interface NexusImpactParams {
|
|
778
|
+
/** Symbol name (required). */
|
|
779
|
+
symbol: string;
|
|
780
|
+
/** Project ID (optional, defaults to current). */
|
|
781
|
+
projectId?: string;
|
|
782
|
+
/** Include "why" reasons (optional). */
|
|
783
|
+
why?: boolean;
|
|
784
|
+
}
|
|
785
|
+
/** Affected symbol in impact result. */
|
|
786
|
+
export interface NexusImpactAffectedNode {
|
|
787
|
+
nodeId: string;
|
|
788
|
+
label: string;
|
|
789
|
+
kind: string;
|
|
790
|
+
reasons: string[];
|
|
791
|
+
}
|
|
792
|
+
/** Result of `nexus.impact`. */
|
|
793
|
+
export interface NexusImpactResult {
|
|
794
|
+
targetNodeId: string | null;
|
|
795
|
+
why: boolean;
|
|
796
|
+
riskLevel: 'NONE' | 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
|
|
797
|
+
affected: NexusImpactAffectedNode[];
|
|
798
|
+
}
|
|
799
|
+
|
|
800
|
+
/** Parameters for `nexus.full-context`. */
|
|
801
|
+
export interface NexusFullContextParams {
|
|
802
|
+
/** Symbol name (required). */
|
|
803
|
+
symbol: string;
|
|
804
|
+
}
|
|
805
|
+
/** Result of `nexus.full-context`. */
|
|
806
|
+
export type NexusFullContextResult = unknown;
|
|
807
|
+
|
|
808
|
+
/** Parameters for `nexus.task-footprint`. */
|
|
809
|
+
export interface NexusTaskFootprintParams {
|
|
810
|
+
/** Task ID (required). */
|
|
811
|
+
taskId: string;
|
|
812
|
+
}
|
|
813
|
+
/** Result of `nexus.task-footprint`. */
|
|
814
|
+
export type NexusTaskFootprintResult = unknown;
|
|
815
|
+
|
|
816
|
+
/** Parameters for `nexus.brain-anchors`. */
|
|
817
|
+
export interface NexusBrainAnchorsParams {
|
|
818
|
+
/** Entry ID (required). */
|
|
819
|
+
entryId: string;
|
|
820
|
+
}
|
|
821
|
+
/** Result of `nexus.brain-anchors`. */
|
|
822
|
+
export type NexusBrainAnchorsResult = unknown;
|
|
823
|
+
|
|
824
|
+
/** Parameters for `nexus.why`. */
|
|
825
|
+
export interface NexusWhyParams {
|
|
826
|
+
/** Symbol name (required). */
|
|
827
|
+
symbol: string;
|
|
828
|
+
}
|
|
829
|
+
/** Result of `nexus.why`. */
|
|
830
|
+
export type NexusWhyResult = unknown;
|
|
831
|
+
|
|
832
|
+
/** Parameters for `nexus.impact-full`. */
|
|
833
|
+
export interface NexusImpactFullParams {
|
|
834
|
+
/** Symbol name (required). */
|
|
835
|
+
symbol: string;
|
|
836
|
+
}
|
|
837
|
+
/** Result of `nexus.impact-full`. */
|
|
838
|
+
export type NexusImpactFullResult = unknown;
|
|
839
|
+
|
|
840
|
+
/** Parameters for `nexus.route-map`. */
|
|
841
|
+
export interface NexusRouteMapParams {
|
|
842
|
+
/** Project ID (optional, auto-generated from projectRoot). */
|
|
843
|
+
projectId?: string;
|
|
844
|
+
}
|
|
845
|
+
/** Result of `nexus.route-map`. */
|
|
846
|
+
export type NexusRouteMapResult = unknown;
|
|
847
|
+
|
|
848
|
+
/** Parameters for `nexus.shape-check`. */
|
|
849
|
+
export interface NexusShapeCheckParams {
|
|
850
|
+
/** Route symbol (required). */
|
|
851
|
+
routeSymbol: string;
|
|
852
|
+
/** Project ID (optional, auto-generated from projectRoot). */
|
|
853
|
+
projectId?: string;
|
|
854
|
+
}
|
|
855
|
+
/** Result of `nexus.shape-check`. */
|
|
856
|
+
export type NexusShapeCheckResult = unknown;
|
|
857
|
+
|
|
858
|
+
/** Parameters for `nexus.search-code`. */
|
|
859
|
+
export interface NexusSearchCodeParams {
|
|
860
|
+
/** Search pattern (required). */
|
|
861
|
+
pattern: string;
|
|
862
|
+
/** Max results (default 10). */
|
|
863
|
+
limit?: number;
|
|
864
|
+
}
|
|
865
|
+
/** Result of `nexus.search-code`. */
|
|
866
|
+
export type NexusSearchCodeResult = unknown;
|
|
867
|
+
|
|
868
|
+
/** Parameters for `nexus.wiki`. */
|
|
869
|
+
export interface NexusWikiParams {
|
|
870
|
+
/** Output directory (optional). */
|
|
871
|
+
outputDir?: string;
|
|
872
|
+
/** Community filter (optional). */
|
|
873
|
+
communityFilter?: string;
|
|
874
|
+
/** Incremental mode (optional). */
|
|
875
|
+
incremental?: boolean;
|
|
876
|
+
}
|
|
877
|
+
/** Result of `nexus.wiki`. */
|
|
878
|
+
export type NexusWikiResult = unknown;
|
|
879
|
+
|
|
880
|
+
/** Parameters for `nexus.contracts-show`. */
|
|
881
|
+
export interface NexusContractsShowParams {
|
|
882
|
+
/** Project A identifier (required). */
|
|
883
|
+
projectA: string;
|
|
884
|
+
/** Project B identifier (required). */
|
|
885
|
+
projectB: string;
|
|
886
|
+
}
|
|
887
|
+
/** Result of `nexus.contracts-show`. */
|
|
888
|
+
export type NexusContractsShowResult = unknown;
|
|
889
|
+
|
|
890
|
+
/** Parameters for `nexus.task-symbols`. */
|
|
891
|
+
export interface NexusTaskSymbolsParams {
|
|
892
|
+
/** Task ID (required). */
|
|
893
|
+
taskId: string;
|
|
894
|
+
}
|
|
895
|
+
/** Result of `nexus.task-symbols`. */
|
|
896
|
+
export type NexusTaskSymbolsResult = unknown;
|
|
897
|
+
|
|
898
|
+
/** Parameters for `nexus.sigil.list`. */
|
|
899
|
+
export interface NexusSigilListParams {
|
|
900
|
+
/** Role filter (optional). */
|
|
901
|
+
role?: string;
|
|
902
|
+
}
|
|
903
|
+
/** Result of `nexus.sigil.list`. */
|
|
904
|
+
export type NexusSigilListResult = unknown;
|
|
905
|
+
|
|
906
|
+
/** Parameters for `nexus.sigil.sync` — none. */
|
|
907
|
+
export type NexusSigilSyncParams = Record<string, never>;
|
|
908
|
+
/** Result of `nexus.sigil.sync`. */
|
|
909
|
+
export type NexusSigilSyncResult = unknown;
|
|
910
|
+
|
|
911
|
+
/** Parameters for `nexus.conduit-scan`. */
|
|
912
|
+
export type NexusConduitScanParams = Record<string, never>;
|
|
913
|
+
/** Result of `nexus.conduit-scan`. */
|
|
914
|
+
export type NexusConduitScanResult = unknown;
|
|
915
|
+
|
|
916
|
+
/** Parameters for `nexus.contracts-sync`. */
|
|
917
|
+
export interface NexusContractsSyncParams {
|
|
918
|
+
/** Repository path (optional). */
|
|
919
|
+
repoPath?: string;
|
|
920
|
+
/** Project ID (optional). */
|
|
921
|
+
projectId?: string;
|
|
922
|
+
}
|
|
923
|
+
/** Result of `nexus.contracts-sync`. */
|
|
924
|
+
export type NexusContractsSyncResult = unknown;
|
|
925
|
+
|
|
926
|
+
/** Parameters for `nexus.contracts-link-tasks`. */
|
|
927
|
+
export interface NexusContractsLinkTasksParams {
|
|
928
|
+
/** Repository path (optional). */
|
|
929
|
+
repoPath?: string;
|
|
930
|
+
/** Project ID (optional). */
|
|
931
|
+
projectId?: string;
|
|
932
|
+
}
|
|
933
|
+
/** Result of `nexus.contracts-link-tasks`. */
|
|
934
|
+
export type NexusContractsLinkTasksResult = unknown;
|
|
935
|
+
|
|
936
|
+
// ============================================================================
|
|
937
|
+
// Typed Operations Union (T1424 — Wave D typed-dispatch migration)
|
|
938
|
+
// ============================================================================
|
|
939
|
+
|
|
940
|
+
/**
|
|
941
|
+
* All Nexus domain operations mapped to their [Params, Result] tuples.
|
|
942
|
+
*
|
|
943
|
+
* This type enables {@link TypedDomainHandler} to provide compile-time safety
|
|
944
|
+
* for every nexus operation, eliminating the ~76 type casts in the legacy
|
|
945
|
+
* handler pattern (T988 audit follow-on).
|
|
946
|
+
*
|
|
947
|
+
* @task T1424 — Nexus domain typed narrowing
|
|
948
|
+
*/
|
|
949
|
+
export type NexusOps = {
|
|
950
|
+
readonly status: readonly [NexusStatusParams, NexusStatusResult];
|
|
951
|
+
readonly list: readonly [NexusListParams, NexusListResult];
|
|
952
|
+
readonly show: readonly [NexusShowParams, NexusShowResult];
|
|
953
|
+
readonly resolve: readonly [NexusResolveParams, NexusResolveResult];
|
|
954
|
+
readonly deps: readonly [NexusDepsParams, NexusDepsResult];
|
|
955
|
+
readonly graph: readonly [NexusGraphParams, NexusGraphResult];
|
|
956
|
+
readonly 'path.show': readonly [NexusPathShowParams, NexusPathShowResult];
|
|
957
|
+
readonly 'blockers.show': readonly [NexusBlockersShowParams, NexusBlockersShowResult];
|
|
958
|
+
readonly 'orphans.list': readonly [NexusOrphansListParams, NexusOrphansListResult];
|
|
959
|
+
readonly discover: readonly [NexusDiscoverParams, NexusDiscoverResult];
|
|
960
|
+
readonly search: readonly [NexusSearchParams, NexusSearchResult];
|
|
961
|
+
readonly augment: readonly [NexusAugmentParams, NexusAugmentResult];
|
|
962
|
+
readonly 'share.status': readonly [NexusShareStatusParams, NexusShareStatusResult];
|
|
963
|
+
readonly 'transfer.preview': readonly [NexusTransferPreviewParams, NexusTransferPreviewResult];
|
|
964
|
+
readonly 'top-entries': readonly [NexusTopEntriesParams, NexusTopEntriesResult];
|
|
965
|
+
readonly impact: readonly [NexusImpactParams, NexusImpactResult];
|
|
966
|
+
readonly 'full-context': readonly [NexusFullContextParams, NexusFullContextResult];
|
|
967
|
+
readonly 'task-footprint': readonly [NexusTaskFootprintParams, NexusTaskFootprintResult];
|
|
968
|
+
readonly 'brain-anchors': readonly [NexusBrainAnchorsParams, NexusBrainAnchorsResult];
|
|
969
|
+
readonly why: readonly [NexusWhyParams, NexusWhyResult];
|
|
970
|
+
readonly 'impact-full': readonly [NexusImpactFullParams, NexusImpactFullResult];
|
|
971
|
+
readonly 'route-map': readonly [NexusRouteMapParams, NexusRouteMapResult];
|
|
972
|
+
readonly 'shape-check': readonly [NexusShapeCheckParams, NexusShapeCheckResult];
|
|
973
|
+
readonly 'search-code': readonly [NexusSearchCodeParams, NexusSearchCodeResult];
|
|
974
|
+
readonly wiki: readonly [NexusWikiParams, NexusWikiResult];
|
|
975
|
+
readonly 'contracts-show': readonly [NexusContractsShowParams, NexusContractsShowResult];
|
|
976
|
+
readonly 'task-symbols': readonly [NexusTaskSymbolsParams, NexusTaskSymbolsResult];
|
|
977
|
+
readonly 'profile.view': readonly [NexusProfileViewParams, NexusProfileViewResult];
|
|
978
|
+
readonly 'profile.get': readonly [NexusProfileGetParams, NexusProfileGetResult];
|
|
979
|
+
readonly 'profile.import': readonly [NexusProfileImportParams, NexusProfileImportResult];
|
|
980
|
+
readonly 'profile.export': readonly [NexusProfileExportParams, NexusProfileExportResult];
|
|
981
|
+
readonly 'profile.reinforce': readonly [NexusProfileReinforceParams, NexusProfileReinforceResult];
|
|
982
|
+
readonly 'profile.upsert': readonly [NexusProfileUpsertParams, NexusProfileUpsertResult];
|
|
983
|
+
readonly 'profile.supersede': readonly [NexusProfileSupersedeParams, NexusProfileSupersedeResult];
|
|
984
|
+
readonly 'sigil.list': readonly [NexusSigilListParams, NexusSigilListResult];
|
|
985
|
+
readonly 'sigil.sync': readonly [NexusSigilSyncParams, NexusSigilSyncResult];
|
|
986
|
+
readonly init: readonly [NexusInitParams, NexusInitResult];
|
|
987
|
+
readonly register: readonly [NexusRegisterParams, NexusRegisterResult];
|
|
988
|
+
readonly unregister: readonly [NexusUnregisterParams, NexusUnregisterResult];
|
|
989
|
+
readonly sync: readonly [NexusSyncParams, NexusSyncResult];
|
|
990
|
+
readonly 'permission.set': readonly [NexusPermissionSetParams, NexusPermissionSetResult];
|
|
991
|
+
readonly reconcile: readonly [NexusReconcileParams, NexusReconcileResult];
|
|
992
|
+
readonly 'share.snapshot.export': readonly [
|
|
993
|
+
NexusShareSnapshotExportParams,
|
|
994
|
+
NexusShareSnapshotExportResult,
|
|
995
|
+
];
|
|
996
|
+
readonly 'share.snapshot.import': readonly [
|
|
997
|
+
NexusShareSnapshotImportParams,
|
|
998
|
+
NexusShareSnapshotImportResult,
|
|
999
|
+
];
|
|
1000
|
+
readonly transfer: readonly [NexusTransferParams, NexusTransferResult];
|
|
1001
|
+
readonly 'contracts-sync': readonly [NexusContractsSyncParams, NexusContractsSyncResult];
|
|
1002
|
+
readonly 'contracts-link-tasks': readonly [
|
|
1003
|
+
NexusContractsLinkTasksParams,
|
|
1004
|
+
NexusContractsLinkTasksResult,
|
|
1005
|
+
];
|
|
1006
|
+
readonly 'conduit-scan': readonly [NexusConduitScanParams, NexusConduitScanResult];
|
|
1007
|
+
};
|
|
@@ -182,3 +182,90 @@ export interface ReleaseRollbackResult {
|
|
|
182
182
|
/** Rollback reason. @task T963 */
|
|
183
183
|
reason: string;
|
|
184
184
|
}
|
|
185
|
+
|
|
186
|
+
// ── RELEASE-03: IVTR gate check ──────────────────────────────────────────────
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Parameters for `release.gate` — checks all IVTR loops in a release epic
|
|
190
|
+
* have reached the `released` phase before allowing `release.ship`.
|
|
191
|
+
*
|
|
192
|
+
* @task T820 RELEASE-03
|
|
193
|
+
* @task T1416
|
|
194
|
+
*/
|
|
195
|
+
export interface ReleaseGateCheckParams {
|
|
196
|
+
/** Epic ID whose child tasks should be inspected. */
|
|
197
|
+
epicId: string;
|
|
198
|
+
/**
|
|
199
|
+
* Bypass the IVTR gate — requires explicit owner confirmation.
|
|
200
|
+
* When true, the gate check is skipped and a loud warning is emitted.
|
|
201
|
+
*/
|
|
202
|
+
force?: boolean;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/** A single task's IVTR phase status as reported by `release.gate`. */
|
|
206
|
+
export interface IvtrTaskStatus {
|
|
207
|
+
/** Task ID. */
|
|
208
|
+
taskId: string;
|
|
209
|
+
/**
|
|
210
|
+
* Current IVTR phase, or `null` when no IVTR loop has been started for
|
|
211
|
+
* this task (task is "unchecked").
|
|
212
|
+
*/
|
|
213
|
+
currentPhase: 'implement' | 'validate' | 'test' | 'released' | null;
|
|
214
|
+
/** Whether the task blocks release (`true` = blocking). */
|
|
215
|
+
blocking: boolean;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Result of `release.gate`.
|
|
220
|
+
*
|
|
221
|
+
* @task T820 RELEASE-03
|
|
222
|
+
* @task T1416
|
|
223
|
+
*/
|
|
224
|
+
export interface ReleaseGateCheckResult {
|
|
225
|
+
/** Epic ID that was inspected. */
|
|
226
|
+
epicId: string;
|
|
227
|
+
/** Whether the gate passed — all tasks are released or unchecked. */
|
|
228
|
+
passed: boolean;
|
|
229
|
+
/** Whether the gate was bypassed via `--force`. */
|
|
230
|
+
forcedBypass: boolean;
|
|
231
|
+
/** Task IDs whose IVTR state is not `released` (blocking). */
|
|
232
|
+
blocked: string[];
|
|
233
|
+
/**
|
|
234
|
+
* Task IDs with no IVTR state (non-blocking; docs / chore tasks often
|
|
235
|
+
* have no IVTR loop).
|
|
236
|
+
*/
|
|
237
|
+
unchecked: string[];
|
|
238
|
+
/** Full per-task status breakdown. */
|
|
239
|
+
tasks: IvtrTaskStatus[];
|
|
240
|
+
/**
|
|
241
|
+
* Human-readable summary suitable for CLI output and operator review.
|
|
242
|
+
* Present on both pass and fail.
|
|
243
|
+
*/
|
|
244
|
+
summary: string;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
// ── RELEASE-07: IVTR → release auto-suggest ──────────────────────────────────
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Result emitted by `release.ivtr-suggest` — the hint produced when an IVTR
|
|
251
|
+
* loop transitions to `released` and all tasks in the parent epic are now
|
|
252
|
+
* in the `released` phase.
|
|
253
|
+
*
|
|
254
|
+
* @task T820 RELEASE-07
|
|
255
|
+
* @task T1416
|
|
256
|
+
*/
|
|
257
|
+
export interface IvtrAutoSuggestResult {
|
|
258
|
+
/** Task ID that just reached the `released` phase. */
|
|
259
|
+
taskId: string;
|
|
260
|
+
/** Parent epic ID, if the task belongs to one. */
|
|
261
|
+
epicId: string | null;
|
|
262
|
+
/** Whether every task in the epic has reached `released`. */
|
|
263
|
+
epicFullyReleased: boolean;
|
|
264
|
+
/**
|
|
265
|
+
* Suggested next CLI command. Non-null only when `epicFullyReleased` is
|
|
266
|
+
* true. Points the operator toward `cleo release ship`.
|
|
267
|
+
*/
|
|
268
|
+
suggestedCommand: string | null;
|
|
269
|
+
/** Human-readable message for operator guidance. */
|
|
270
|
+
message: string;
|
|
271
|
+
}
|