@open-agent-toolkit/cli 0.1.46 → 0.1.50
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/assets/agents/oat-phase-implementer.md +202 -191
- package/assets/agents/oat-reviewer.md +11 -1
- package/assets/config/dispatch-matrix-recommendation.json +120 -13
- package/assets/docs/cli-utilities/configuration.md +213 -113
- package/assets/docs/cli-utilities/workflow-gates.md +178 -27
- package/assets/docs/contributing/skills.md +14 -8
- package/assets/docs/provider-sync/providers.md +46 -8
- package/assets/docs/provider-sync/scope-and-surface.md +2 -2
- package/assets/docs/reference/cli-reference.md +3 -1
- package/assets/docs/reference/oat-directory-structure.md +27 -26
- package/assets/docs/workflows/projects/artifacts.md +31 -1
- package/assets/docs/workflows/projects/dispatch-ceiling.md +297 -197
- package/assets/docs/workflows/projects/implementation-execution.md +306 -249
- package/assets/docs/workflows/projects/lifecycle.md +26 -5
- package/assets/docs/workflows/projects/reviews.md +27 -2
- package/assets/migration/pjm-restructure.md +1 -1
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-project-implement/SKILL.md +290 -149
- package/assets/skills/oat-project-import-plan/SKILL.md +173 -16
- package/assets/skills/oat-project-next/SKILL.md +2 -2
- package/assets/skills/oat-project-plan/SKILL.md +122 -92
- package/assets/skills/oat-project-plan-writing/SKILL.md +246 -15
- package/assets/skills/oat-project-quick-start/SKILL.md +157 -107
- package/assets/skills/oat-project-review-provide/SKILL.md +110 -22
- package/assets/skills/oat-project-review-provide-remote/SKILL.md +28 -1
- package/dist/commands/config/index.d.ts +3 -0
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +92 -125
- package/dist/commands/doctor/index.d.ts +3 -0
- package/dist/commands/doctor/index.d.ts.map +1 -1
- package/dist/commands/doctor/index.js +57 -95
- package/dist/commands/gate/index.d.ts +7 -1
- package/dist/commands/gate/index.d.ts.map +1 -1
- package/dist/commands/gate/index.js +615 -67
- package/dist/commands/gate/review-verdict.d.ts +16 -0
- package/dist/commands/gate/review-verdict.d.ts.map +1 -1
- package/dist/commands/gate/review-verdict.js +72 -9
- package/dist/commands/project/dispatch-ceiling/index.d.ts.map +1 -1
- package/dist/commands/project/dispatch-ceiling/index.js +567 -99
- package/dist/commands/providers/codex/materialize.d.ts.map +1 -1
- package/dist/commands/providers/codex/materialize.js +6 -1
- package/dist/commands/shared/frontmatter.d.ts +4 -0
- package/dist/commands/shared/frontmatter.d.ts.map +1 -1
- package/dist/commands/shared/frontmatter.js +23 -0
- package/dist/commands/status/index.d.ts +1 -0
- package/dist/commands/status/index.d.ts.map +1 -1
- package/dist/commands/status/index.js +10 -4
- package/dist/commands/sync/index.d.ts.map +1 -1
- package/dist/commands/sync/index.js +10 -3
- package/dist/commands/sync/sync.types.d.ts +1 -0
- package/dist/commands/sync/sync.types.d.ts.map +1 -1
- package/dist/config/dispatch-matrix.d.ts +59 -0
- package/dist/config/dispatch-matrix.d.ts.map +1 -0
- package/dist/config/dispatch-matrix.js +264 -0
- package/dist/config/oat-config.d.ts +9 -18
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +99 -120
- package/dist/config/resolve.d.ts +8 -0
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +66 -1
- package/dist/engine/index.d.ts +1 -1
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +1 -1
- package/dist/engine/scanner.d.ts +1 -0
- package/dist/engine/scanner.d.ts.map +1 -1
- package/dist/engine/scanner.js +17 -1
- package/dist/fs/paths.d.ts +4 -0
- package/dist/fs/paths.d.ts.map +1 -1
- package/dist/fs/paths.js +18 -1
- package/dist/providers/ceiling/registry.d.ts +1 -0
- package/dist/providers/ceiling/registry.d.ts.map +1 -1
- package/dist/providers/ceiling/registry.js +12 -5
- package/dist/providers/codex/codec/catalog.d.ts +14 -0
- package/dist/providers/codex/codec/catalog.d.ts.map +1 -0
- package/dist/providers/codex/codec/catalog.js +21 -0
- package/dist/providers/codex/codec/materialize.d.ts.map +1 -1
- package/dist/providers/codex/codec/materialize.js +6 -5
- package/dist/providers/codex/codec/shared.d.ts +19 -0
- package/dist/providers/codex/codec/shared.d.ts.map +1 -1
- package/dist/providers/codex/codec/shared.js +98 -5
- package/dist/providers/codex/codec/sync-extension.d.ts.map +1 -1
- package/dist/providers/codex/codec/sync-extension.js +142 -32
- package/dist/providers/identity/availability.d.ts +12 -0
- package/dist/providers/identity/availability.d.ts.map +1 -1
- package/dist/providers/identity/availability.js +72 -29
- package/dist/providers/identity/dispatch-report.d.ts +124 -0
- package/dist/providers/identity/dispatch-report.d.ts.map +1 -0
- package/dist/providers/identity/dispatch-report.js +285 -0
- package/dist/providers/identity/dispatch-validation.d.ts +28 -0
- package/dist/providers/identity/dispatch-validation.d.ts.map +1 -0
- package/dist/providers/identity/dispatch-validation.js +149 -0
- package/dist/providers/identity/stamp.d.ts +2 -0
- package/dist/providers/identity/stamp.d.ts.map +1 -1
- package/dist/providers/identity/stamp.js +7 -1
- package/dist/shared/types.d.ts +1 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js +4 -0
- package/package.json +2 -2
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { buildCodexMaterializedRoleName } from './materialize.js';
|
|
2
|
+
import { SUPPORTED_CODEX_ROLE_TARGETS } from './shared.js';
|
|
3
|
+
export { SUPPORTED_CODEX_ROLE_TARGETS } from './shared.js';
|
|
4
|
+
export const SUPPORTED_CODEX_BASE_ROLES = [
|
|
5
|
+
'oat-phase-implementer',
|
|
6
|
+
'oat-reviewer',
|
|
7
|
+
];
|
|
8
|
+
export function isSupportedCodexRoleTarget(target) {
|
|
9
|
+
return SUPPORTED_CODEX_ROLE_TARGETS.some((supported) => supported.model === target.model && supported.effort === target.effort);
|
|
10
|
+
}
|
|
11
|
+
export function expandSupportedCodexRoleCatalogue() {
|
|
12
|
+
return SUPPORTED_CODEX_BASE_ROLES.flatMap((baseRole) => SUPPORTED_CODEX_ROLE_TARGETS.map((target) => ({
|
|
13
|
+
baseRole,
|
|
14
|
+
...target,
|
|
15
|
+
roleName: buildCodexMaterializedRoleName({
|
|
16
|
+
agentName: baseRole,
|
|
17
|
+
model: target.model,
|
|
18
|
+
effort: target.effort,
|
|
19
|
+
}),
|
|
20
|
+
}))).sort((left, right) => left.roleName.localeCompare(right.roleName));
|
|
21
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"materialize.d.ts","sourceRoot":"","sources":["../../../../src/providers/codex/codec/materialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAGhE,OAAO,EACL,KAAK,eAAe,EAErB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"materialize.d.ts","sourceRoot":"","sources":["../../../../src/providers/codex/codec/materialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAGhE,OAAO,EACL,KAAK,eAAe,EAErB,MAAM,mBAAmB,CAAC;AAM3B,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,sBAAsB,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAUD,wBAAgB,8BAA8B,CAAC,EAC7C,SAAS,EACT,KAAK,EACL,MAAM,GACP,EAAE,gCAAgC,GAAG,MAAM,CAY3C;AAWD,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,KAAK,EACL,MAAM,EACN,QAAQ,GACT,EAAE,2BAA2B,GAAG,eAAe,CA+B/C"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CliError } from '../../../errors/index.js';
|
|
2
2
|
import { exportCanonicalAgentToCodexRole, } from './export-to-codex.js';
|
|
3
|
-
import {
|
|
3
|
+
import { buildCodexMaterializedTargetRoleName, sanitizeCodexRoleName, } from './shared.js';
|
|
4
4
|
function requireNonEmpty(value, label) {
|
|
5
5
|
const normalized = value.trim();
|
|
6
6
|
if (!normalized) {
|
|
@@ -9,10 +9,11 @@ function requireNonEmpty(value, label) {
|
|
|
9
9
|
return normalized;
|
|
10
10
|
}
|
|
11
11
|
export function buildCodexMaterializedRoleName({ agentName, model, effort, }) {
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
const roleName = buildCodexMaterializedTargetRoleName({
|
|
13
|
+
agentName,
|
|
14
|
+
model,
|
|
15
|
+
effort,
|
|
16
|
+
});
|
|
16
17
|
if (!roleName) {
|
|
17
18
|
throw new CliError('Cannot materialize Codex role: missing role name.');
|
|
18
19
|
}
|
|
@@ -1,8 +1,27 @@
|
|
|
1
1
|
export declare const OAT_MANAGED_ROLE_HEADER = "# oat-managed: true";
|
|
2
2
|
export declare const OAT_MANAGED_ROLE_NAME_PREFIX = "# oat-role: ";
|
|
3
|
+
export declare const OAT_MANAGED_ROLE_OWNER_PREFIX = "# oat-owner: ";
|
|
4
|
+
export type CodexRoleOwner = 'supported-catalogue' | 'user-config' | 'project-config';
|
|
5
|
+
export declare const SUPPORTED_CODEX_ROLE_TARGETS: readonly ({
|
|
6
|
+
model: string;
|
|
7
|
+
effort: "high" | "medium" | "low" | "xhigh";
|
|
8
|
+
} | {
|
|
9
|
+
model: string;
|
|
10
|
+
effort: "high" | "medium" | "low" | "xhigh";
|
|
11
|
+
} | {
|
|
12
|
+
model: string;
|
|
13
|
+
effort: string;
|
|
14
|
+
})[];
|
|
3
15
|
export declare function sanitizeCodexRoleName(input: string): string;
|
|
4
16
|
export declare function normalizeCodexRoleName(input: string): string;
|
|
17
|
+
export declare function buildCodexMaterializedTargetRoleName(options: {
|
|
18
|
+
agentName: string;
|
|
19
|
+
model: string;
|
|
20
|
+
effort: string;
|
|
21
|
+
}): string;
|
|
5
22
|
export declare function isOatManagedCodexRoleFile(content: string, roleName?: string): boolean;
|
|
6
23
|
export declare function withOatManagedCodexHeader(roleName: string, tomlBody: string): string;
|
|
24
|
+
export declare function readOatManagedCodexRoleOwner(content: string): CodexRoleOwner | null;
|
|
25
|
+
export declare function withOatManagedCodexRoleOwner(content: string, owner: CodexRoleOwner): string;
|
|
7
26
|
export declare function stringifyToml(object: Record<string, unknown>): string;
|
|
8
27
|
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/providers/codex/codec/shared.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/providers/codex/codec/shared.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAC7D,eAAO,MAAM,4BAA4B,iBAAiB,CAAC;AAC3D,eAAO,MAAM,6BAA6B,kBAAkB,CAAC;AAE7D,MAAM,MAAM,cAAc,GACtB,qBAAqB,GACrB,aAAa,GACb,gBAAgB,CAAC;AAoBrB,eAAO,MAAM,4BAA4B;;;;;;;;;IAa/B,CAAC;AAEX,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO5D;AAQD,wBAAgB,oCAAoC,CAAC,OAAO,EAAE;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CAiBT;AAgDD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAOT;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,GACd,cAAc,GAAG,IAAI,CAEvB;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,cAAc,GACpB,MAAM,CAkBR;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAErE"}
|
|
@@ -1,6 +1,30 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
1
2
|
import TOML from '@iarna/toml';
|
|
2
3
|
export const OAT_MANAGED_ROLE_HEADER = '# oat-managed: true';
|
|
3
4
|
export const OAT_MANAGED_ROLE_NAME_PREFIX = '# oat-role: ';
|
|
5
|
+
export const OAT_MANAGED_ROLE_OWNER_PREFIX = '# oat-owner: ';
|
|
6
|
+
const CODEX_ROLE_MARKER_PATTERN = /^# oat-role: ([a-zA-Z0-9_-]+)$/;
|
|
7
|
+
const CODEX_OWNER_MARKER_PATTERN = /^# oat-owner: (supported-catalogue|user-config|project-config)$/;
|
|
8
|
+
const STANDARD_SUPPORTED_CODEX_EFFORTS = [
|
|
9
|
+
'low',
|
|
10
|
+
'medium',
|
|
11
|
+
'high',
|
|
12
|
+
'xhigh',
|
|
13
|
+
];
|
|
14
|
+
export const SUPPORTED_CODEX_ROLE_TARGETS = [
|
|
15
|
+
...STANDARD_SUPPORTED_CODEX_EFFORTS.map((effort) => ({
|
|
16
|
+
model: 'gpt-5.6-luna',
|
|
17
|
+
effort,
|
|
18
|
+
})),
|
|
19
|
+
...STANDARD_SUPPORTED_CODEX_EFFORTS.map((effort) => ({
|
|
20
|
+
model: 'gpt-5.6-terra',
|
|
21
|
+
effort,
|
|
22
|
+
})),
|
|
23
|
+
...[...STANDARD_SUPPORTED_CODEX_EFFORTS, 'max'].map((effort) => ({
|
|
24
|
+
model: 'gpt-5.6-sol',
|
|
25
|
+
effort,
|
|
26
|
+
})),
|
|
27
|
+
];
|
|
4
28
|
export function sanitizeCodexRoleName(input) {
|
|
5
29
|
return normalizeCodexRoleName(input.replace(/\.md$/i, ''));
|
|
6
30
|
}
|
|
@@ -12,18 +36,87 @@ export function normalizeCodexRoleName(input) {
|
|
|
12
36
|
.replace(/-{2,}/g, '-')
|
|
13
37
|
.replace(/^-+|-+$/g, '');
|
|
14
38
|
}
|
|
39
|
+
function isSupportedCodexRoleTarget(model, effort) {
|
|
40
|
+
return SUPPORTED_CODEX_ROLE_TARGETS.some((supported) => supported.model === model && supported.effort === effort);
|
|
41
|
+
}
|
|
42
|
+
export function buildCodexMaterializedTargetRoleName(options) {
|
|
43
|
+
const normalizedAgentName = sanitizeCodexRoleName(options.agentName);
|
|
44
|
+
const normalizedModel = normalizeCodexRoleName(options.model);
|
|
45
|
+
const normalizedEffort = normalizeCodexRoleName(options.effort);
|
|
46
|
+
const customTargetSuffix = isSupportedCodexRoleTarget(options.model, options.effort)
|
|
47
|
+
? ''
|
|
48
|
+
: `-${createHash('sha256')
|
|
49
|
+
.update(`${options.model}\0${options.effort}`)
|
|
50
|
+
.digest('hex')
|
|
51
|
+
.slice(0, 10)}`;
|
|
52
|
+
return normalizeCodexRoleName(`${normalizedAgentName}-${normalizedModel}-${normalizedEffort}${customTargetSuffix}`);
|
|
53
|
+
}
|
|
54
|
+
function parseOatManagedCodexRoleHeader(content) {
|
|
55
|
+
const lines = content
|
|
56
|
+
.split('\n')
|
|
57
|
+
.map((line) => (line.endsWith('\r') ? line.slice(0, -1) : line));
|
|
58
|
+
const headerLines = [];
|
|
59
|
+
for (const line of lines) {
|
|
60
|
+
if (!line.startsWith('# oat-')) {
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
headerLines.push(line);
|
|
64
|
+
}
|
|
65
|
+
if (headerLines.length < 2 ||
|
|
66
|
+
headerLines.length > 3 ||
|
|
67
|
+
headerLines[0] !== OAT_MANAGED_ROLE_HEADER) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
const roleMatch = CODEX_ROLE_MARKER_PATTERN.exec(headerLines[1]);
|
|
71
|
+
if (!roleMatch) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
let owner = null;
|
|
75
|
+
let ownerLineIndex = null;
|
|
76
|
+
if (headerLines.length === 3) {
|
|
77
|
+
const ownerMatch = CODEX_OWNER_MARKER_PATTERN.exec(headerLines[2]);
|
|
78
|
+
if (!ownerMatch) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
owner = ownerMatch[1];
|
|
82
|
+
ownerLineIndex = 2;
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
roleName: roleMatch[1],
|
|
86
|
+
roleLineIndex: 1,
|
|
87
|
+
owner,
|
|
88
|
+
ownerLineIndex,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
15
91
|
export function isOatManagedCodexRoleFile(content, roleName) {
|
|
16
|
-
|
|
92
|
+
const header = parseOatManagedCodexRoleHeader(content);
|
|
93
|
+
if (!header) {
|
|
17
94
|
return false;
|
|
18
95
|
}
|
|
19
|
-
|
|
20
|
-
return true;
|
|
21
|
-
}
|
|
22
|
-
return content.includes(`${OAT_MANAGED_ROLE_NAME_PREFIX}${roleName}`);
|
|
96
|
+
return roleName === undefined || header.roleName === roleName;
|
|
23
97
|
}
|
|
24
98
|
export function withOatManagedCodexHeader(roleName, tomlBody) {
|
|
25
99
|
return `${OAT_MANAGED_ROLE_HEADER}\n${OAT_MANAGED_ROLE_NAME_PREFIX}${roleName}\n${tomlBody}`;
|
|
26
100
|
}
|
|
101
|
+
export function readOatManagedCodexRoleOwner(content) {
|
|
102
|
+
return parseOatManagedCodexRoleHeader(content)?.owner ?? null;
|
|
103
|
+
}
|
|
104
|
+
export function withOatManagedCodexRoleOwner(content, owner) {
|
|
105
|
+
const header = parseOatManagedCodexRoleHeader(content);
|
|
106
|
+
if (!header) {
|
|
107
|
+
return content;
|
|
108
|
+
}
|
|
109
|
+
const lines = content.split('\n');
|
|
110
|
+
const ownerLine = `${OAT_MANAGED_ROLE_OWNER_PREFIX}${owner}`;
|
|
111
|
+
const usesCarriageReturn = lines[header.roleLineIndex]?.endsWith('\r') ?? false;
|
|
112
|
+
const encodedOwnerLine = `${ownerLine}${usesCarriageReturn ? '\r' : ''}`;
|
|
113
|
+
if (header.ownerLineIndex !== null) {
|
|
114
|
+
lines[header.ownerLineIndex] = encodedOwnerLine;
|
|
115
|
+
return lines.join('\n');
|
|
116
|
+
}
|
|
117
|
+
lines.splice(header.roleLineIndex + 1, 0, encodedOwnerLine);
|
|
118
|
+
return lines.join('\n');
|
|
119
|
+
}
|
|
27
120
|
export function stringifyToml(object) {
|
|
28
121
|
return TOML.stringify(object);
|
|
29
122
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-extension.d.ts","sourceRoot":"","sources":["../../../../src/providers/codex/codec/sync-extension.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sync-extension.d.ts","sourceRoot":"","sources":["../../../../src/providers/codex/codec/sync-extension.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAqBpD,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAC3E,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAErD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,4BAA6B,SAAQ,uBAAuB;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,4BAA4B,EAAE,CAAC;IAC3C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAgBD,UAAU,iCAAiC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAwhBD,wBAAsB,gCAAgC,CACpD,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,cAAc,EAAE,EAClC,qBAAqB,CAAC,EAAE,MAAM,EAAE,EAChC,OAAO,GAAE,iCAAsC,GAC9C,OAAO,CAAC,kBAAkB,CAAC,CA+I7B;AAED,wBAAsB,8BAA8B,CAClD,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,yBAAyB,CAAC,CA6BpC;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAE1E;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,GAAG;IACjE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB,CAaA;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,kBAAkB,GACvB,uBAAuB,EAAE,CAQ3B"}
|
|
@@ -2,19 +2,19 @@ import { createHash } from 'node:crypto';
|
|
|
2
2
|
import { readdir, readFile, rm, writeFile } from 'node:fs/promises';
|
|
3
3
|
import { basename, dirname, join, relative, resolve } from 'node:path';
|
|
4
4
|
import { parseCanonicalAgentFile } from '../../../agents/canonical/index.js';
|
|
5
|
-
import { isCodexMaterializedRouteTarget, resolveActiveProject, validateDispatchRouteTarget, } from '../../../config/oat-config.js';
|
|
5
|
+
import { isCodexMaterializedRouteTarget, isWorkflowDispatchCandidateLadder, isWorkflowDispatchFallbackRoute, normalizeProjectPath, resolveActiveProject, validateDispatchRouteTarget, } from '../../../config/oat-config.js';
|
|
6
6
|
import { resolveEffectiveConfig } from '../../../config/resolve.js';
|
|
7
|
+
import { CliError } from '../../../errors/index.js';
|
|
7
8
|
import { ensureDir, fileExists } from '../../../fs/io.js';
|
|
9
|
+
import { validateRealPathWithinScope } from '../../../fs/paths.js';
|
|
8
10
|
import TOML from '@iarna/toml';
|
|
9
11
|
import YAML from 'yaml';
|
|
12
|
+
import { SUPPORTED_CODEX_BASE_ROLES, SUPPORTED_CODEX_ROLE_TARGETS, } from './catalog.js';
|
|
10
13
|
import { mergeCodexConfig } from './config-merge.js';
|
|
11
14
|
import { exportCanonicalAgentToCodexRole } from './export-to-codex.js';
|
|
12
15
|
import { materializeCodexRole } from './materialize.js';
|
|
13
|
-
import { isOatManagedCodexRoleFile } from './shared.js';
|
|
14
|
-
const CODEX_MATERIALIZED_BASE_ROLES = new Set(
|
|
15
|
-
'oat-phase-implementer',
|
|
16
|
-
'oat-reviewer',
|
|
17
|
-
]);
|
|
16
|
+
import { isOatManagedCodexRoleFile, readOatManagedCodexRoleOwner, withOatManagedCodexRoleOwner, } from './shared.js';
|
|
17
|
+
const CODEX_MATERIALIZED_BASE_ROLES = new Set(SUPPORTED_CODEX_BASE_ROLES);
|
|
18
18
|
function hashContent(content) {
|
|
19
19
|
return createHash('sha256').update(content).digest('hex');
|
|
20
20
|
}
|
|
@@ -74,14 +74,22 @@ async function desiredRolesFromCanonical(canonicalEntries, scopeRoot, materializ
|
|
|
74
74
|
description: materialized.description,
|
|
75
75
|
configFile: materialized.configFile,
|
|
76
76
|
rolePath: join(scopeRoot, '.codex', materialized.configFile),
|
|
77
|
-
content: materialized.content,
|
|
77
|
+
content: withOatManagedCodexRoleOwner(materialized.content, target.owner),
|
|
78
78
|
});
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
|
+
const roleContents = new Map();
|
|
83
|
+
for (const role of roles) {
|
|
84
|
+
const existing = roleContents.get(role.roleName);
|
|
85
|
+
if (existing !== undefined && existing !== role.content) {
|
|
86
|
+
throw new CliError(`Distinct Codex targets produced the same role name ${role.roleName}. Refusing ambiguous role writes.`);
|
|
87
|
+
}
|
|
88
|
+
roleContents.set(role.roleName, role.content);
|
|
89
|
+
}
|
|
82
90
|
return roles.sort((left, right) => left.roleName.localeCompare(right.roleName));
|
|
83
91
|
}
|
|
84
|
-
function collectCodexTargetFromEntry(entry, targets) {
|
|
92
|
+
function collectCodexTargetFromEntry(entry, targets, owner) {
|
|
85
93
|
if (typeof entry === 'string') {
|
|
86
94
|
return;
|
|
87
95
|
}
|
|
@@ -92,26 +100,42 @@ function collectCodexTargetFromEntry(entry, targets) {
|
|
|
92
100
|
if (!validation.valid || !entry.model || !entry.effort) {
|
|
93
101
|
return;
|
|
94
102
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
103
|
+
const key = `${entry.model}\0${entry.effort}`;
|
|
104
|
+
if (!targets.has(key)) {
|
|
105
|
+
targets.set(key, {
|
|
106
|
+
model: entry.model,
|
|
107
|
+
effort: entry.effort,
|
|
108
|
+
owner,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
99
111
|
}
|
|
100
|
-
function collectCodexTargetsFromCell(cell, targets) {
|
|
112
|
+
function collectCodexTargetsFromCell(cell, targets, owner) {
|
|
101
113
|
if (typeof cell === 'string') {
|
|
102
114
|
return;
|
|
103
115
|
}
|
|
116
|
+
if (isWorkflowDispatchCandidateLadder(cell)) {
|
|
117
|
+
for (const candidate of cell.candidates) {
|
|
118
|
+
if (isWorkflowDispatchFallbackRoute(candidate)) {
|
|
119
|
+
for (const entry of candidate.route) {
|
|
120
|
+
collectCodexTargetFromEntry(entry, targets, owner);
|
|
121
|
+
}
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
collectCodexTargetFromEntry(candidate, targets, owner);
|
|
125
|
+
}
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
104
128
|
for (const entry of cell) {
|
|
105
|
-
collectCodexTargetFromEntry(entry, targets);
|
|
129
|
+
collectCodexTargetFromEntry(entry, targets, owner);
|
|
106
130
|
}
|
|
107
131
|
}
|
|
108
|
-
function collectCodexMaterializationTargetsFromProvider(providerValue, targets) {
|
|
132
|
+
function collectCodexMaterializationTargetsFromProvider(providerValue, targets, owner) {
|
|
109
133
|
if (providerValue === undefined || typeof providerValue === 'string') {
|
|
110
134
|
return;
|
|
111
135
|
}
|
|
112
136
|
for (const cell of Object.values(providerValue)) {
|
|
113
137
|
if (cell !== undefined) {
|
|
114
|
-
collectCodexTargetsFromCell(cell, targets);
|
|
138
|
+
collectCodexTargetsFromCell(cell, targets, owner);
|
|
115
139
|
}
|
|
116
140
|
}
|
|
117
141
|
}
|
|
@@ -137,26 +161,54 @@ function routeTargetFromUnknown(value) {
|
|
|
137
161
|
}
|
|
138
162
|
return Object.keys(target).length > 0 ? target : null;
|
|
139
163
|
}
|
|
140
|
-
function collectCodexTargetsFromUnknownCell(value, targets) {
|
|
141
|
-
|
|
164
|
+
function collectCodexTargetsFromUnknownCell(value, targets, owner) {
|
|
165
|
+
const collectCandidate = (candidate) => {
|
|
166
|
+
if (!candidate ||
|
|
167
|
+
typeof candidate !== 'object' ||
|
|
168
|
+
Array.isArray(candidate)) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
const route = candidate['route'];
|
|
172
|
+
if (Array.isArray(route)) {
|
|
173
|
+
for (const entry of route) {
|
|
174
|
+
const target = routeTargetFromUnknown(entry);
|
|
175
|
+
if (target) {
|
|
176
|
+
collectCodexTargetFromEntry(target, targets, owner);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
const target = routeTargetFromUnknown(candidate);
|
|
182
|
+
if (target) {
|
|
183
|
+
collectCodexTargetFromEntry(target, targets, owner);
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
if (Array.isArray(value)) {
|
|
187
|
+
for (const entry of value) {
|
|
188
|
+
collectCandidate(entry);
|
|
189
|
+
}
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
if (!value || typeof value !== 'object') {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
const candidates = value['candidates'];
|
|
196
|
+
if (!Array.isArray(candidates)) {
|
|
142
197
|
return;
|
|
143
198
|
}
|
|
144
|
-
for (const entry of
|
|
199
|
+
for (const entry of candidates) {
|
|
145
200
|
if (typeof entry === 'string') {
|
|
146
201
|
continue;
|
|
147
202
|
}
|
|
148
|
-
|
|
149
|
-
if (target) {
|
|
150
|
-
collectCodexTargetFromEntry(target, targets);
|
|
151
|
-
}
|
|
203
|
+
collectCandidate(entry);
|
|
152
204
|
}
|
|
153
205
|
}
|
|
154
|
-
function collectCodexTargetsFromUnknownProvider(value, targets) {
|
|
206
|
+
function collectCodexTargetsFromUnknownProvider(value, targets, owner) {
|
|
155
207
|
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
156
208
|
return;
|
|
157
209
|
}
|
|
158
210
|
for (const cell of Object.values(value)) {
|
|
159
|
-
collectCodexTargetsFromUnknownCell(cell, targets);
|
|
211
|
+
collectCodexTargetsFromUnknownCell(cell, targets, owner);
|
|
160
212
|
}
|
|
161
213
|
}
|
|
162
214
|
function frontmatterBlock(content) {
|
|
@@ -168,13 +220,31 @@ function frontmatterBlock(content) {
|
|
|
168
220
|
return end > 0 ? normalized.slice(4, end) : null;
|
|
169
221
|
}
|
|
170
222
|
async function collectProjectStateCodexTargets(scopeRoot, options, targets) {
|
|
171
|
-
const
|
|
223
|
+
const projectPathCandidate = options.projectPath === undefined
|
|
172
224
|
? (await resolveActiveProject(scopeRoot)).path
|
|
173
225
|
: options.projectPath;
|
|
226
|
+
if (!projectPathCandidate) {
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
const projectPath = normalizeProjectPath(scopeRoot, projectPathCandidate);
|
|
174
230
|
if (!projectPath) {
|
|
231
|
+
if (options.projectPath !== undefined) {
|
|
232
|
+
throw new CliError(`Project-scoped Codex materialization path must be repo-relative or inside repo root: ${projectPathCandidate}`);
|
|
233
|
+
}
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
let realProjectPath;
|
|
237
|
+
try {
|
|
238
|
+
const validated = await validateRealPathWithinScope(join(scopeRoot, projectPath), scopeRoot);
|
|
239
|
+
realProjectPath = validated.realPath;
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
if (options.projectPath !== undefined) {
|
|
243
|
+
throw new CliError(`Project-scoped Codex materialization path must be repo-relative or inside repo root: ${projectPathCandidate}`);
|
|
244
|
+
}
|
|
175
245
|
return;
|
|
176
246
|
}
|
|
177
|
-
const statePath = join(
|
|
247
|
+
const statePath = join(realProjectPath, 'state.md');
|
|
178
248
|
const stateContent = await readOptionalFile(statePath);
|
|
179
249
|
if (!stateContent) {
|
|
180
250
|
return;
|
|
@@ -195,17 +265,32 @@ async function collectProjectStateCodexTargets(scopeRoot, options, targets) {
|
|
|
195
265
|
if (!matrix || typeof matrix !== 'object' || Array.isArray(matrix)) {
|
|
196
266
|
return;
|
|
197
267
|
}
|
|
198
|
-
collectCodexTargetsFromUnknownProvider(matrix['codex'], targets);
|
|
268
|
+
collectCodexTargetsFromUnknownProvider(matrix['codex'], targets, 'project-config');
|
|
269
|
+
}
|
|
270
|
+
function isUserCodexScope(scopeRoot, options) {
|
|
271
|
+
if (!options.userConfigDir) {
|
|
272
|
+
return false;
|
|
273
|
+
}
|
|
274
|
+
return resolve(scopeRoot) === resolve(options.userConfigDir, '..');
|
|
199
275
|
}
|
|
200
276
|
async function readCodexMaterializationTargets(scopeRoot, options = {}) {
|
|
201
277
|
const targets = new Map();
|
|
202
278
|
const effectiveConfig = await resolveEffectiveConfig(scopeRoot, options.userConfigDir ?? join(scopeRoot, '.oat', '__no-user-config__'), options.env);
|
|
279
|
+
if (isUserCodexScope(scopeRoot, options)) {
|
|
280
|
+
collectCodexMaterializationTargetsFromProvider(effectiveConfig.user.workflow?.dispatchCeiling?.providers?.codex, targets, 'user-config');
|
|
281
|
+
return sortCodexMaterializationTargets(targets);
|
|
282
|
+
}
|
|
283
|
+
for (const target of SUPPORTED_CODEX_ROLE_TARGETS) {
|
|
284
|
+
targets.set(`${target.model}\0${target.effort}`, {
|
|
285
|
+
...target,
|
|
286
|
+
owner: 'supported-catalogue',
|
|
287
|
+
});
|
|
288
|
+
}
|
|
203
289
|
for (const providerValue of [
|
|
204
|
-
effectiveConfig.user.workflow?.dispatchCeiling?.providers?.codex,
|
|
205
290
|
effectiveConfig.shared.workflow?.dispatchCeiling?.providers?.codex,
|
|
206
291
|
effectiveConfig.local.workflow?.dispatchCeiling?.providers?.codex,
|
|
207
292
|
]) {
|
|
208
|
-
collectCodexMaterializationTargetsFromProvider(providerValue, targets);
|
|
293
|
+
collectCodexMaterializationTargetsFromProvider(providerValue, targets, 'project-config');
|
|
209
294
|
}
|
|
210
295
|
await collectProjectStateCodexTargets(scopeRoot, options, targets);
|
|
211
296
|
return sortCodexMaterializationTargets(targets);
|
|
@@ -235,7 +320,7 @@ function parseConfigAgentTable(content) {
|
|
|
235
320
|
return {};
|
|
236
321
|
}
|
|
237
322
|
}
|
|
238
|
-
async function collectStaleManagedRoles(scopeRoot, existingConfigContent, desiredRoleNames) {
|
|
323
|
+
async function collectStaleManagedRoles(scopeRoot, existingConfigContent, desiredRoleNames, cleanupOwner, removeLegacyProjectRoles) {
|
|
239
324
|
const agents = parseConfigAgentTable(existingConfigContent);
|
|
240
325
|
const stale = new Set();
|
|
241
326
|
for (const [roleName, roleConfig] of Object.entries(agents)) {
|
|
@@ -251,6 +336,13 @@ async function collectStaleManagedRoles(scopeRoot, existingConfigContent, desire
|
|
|
251
336
|
if (!roleContent || !isOatManagedCodexRoleFile(roleContent, roleName)) {
|
|
252
337
|
continue;
|
|
253
338
|
}
|
|
339
|
+
const owner = readOatManagedCodexRoleOwner(roleContent);
|
|
340
|
+
const legacyProjectRole = removeLegacyProjectRoles &&
|
|
341
|
+
owner === null &&
|
|
342
|
+
SUPPORTED_CODEX_BASE_ROLES.some((baseRole) => roleName.startsWith(`${baseRole}-`));
|
|
343
|
+
if (owner !== cleanupOwner && !legacyProjectRole) {
|
|
344
|
+
continue;
|
|
345
|
+
}
|
|
254
346
|
stale.add(roleName);
|
|
255
347
|
}
|
|
256
348
|
const agentsDir = join(scopeRoot, '.codex', 'agents');
|
|
@@ -274,6 +366,13 @@ async function collectStaleManagedRoles(scopeRoot, existingConfigContent, desire
|
|
|
274
366
|
if (!roleContent || !isOatManagedCodexRoleFile(roleContent, roleName)) {
|
|
275
367
|
continue;
|
|
276
368
|
}
|
|
369
|
+
const owner = readOatManagedCodexRoleOwner(roleContent);
|
|
370
|
+
const legacyProjectRole = removeLegacyProjectRoles &&
|
|
371
|
+
owner === null &&
|
|
372
|
+
SUPPORTED_CODEX_BASE_ROLES.some((baseRole) => roleName.startsWith(`${baseRole}-`));
|
|
373
|
+
if (owner !== cleanupOwner && !legacyProjectRole) {
|
|
374
|
+
continue;
|
|
375
|
+
}
|
|
277
376
|
stale.add(roleName);
|
|
278
377
|
}
|
|
279
378
|
return [...stale].sort((left, right) => left.localeCompare(right));
|
|
@@ -281,13 +380,24 @@ async function collectStaleManagedRoles(scopeRoot, existingConfigContent, desire
|
|
|
281
380
|
export async function computeCodexProjectExtensionPlan(scopeRoot, canonicalEntries, allowedCanonicalPaths, options = {}) {
|
|
282
381
|
const isPartialSync = allowedCanonicalPaths !== undefined && allowedCanonicalPaths.length > 0;
|
|
283
382
|
const materializationTargets = await readCodexMaterializationTargets(scopeRoot, options);
|
|
383
|
+
if (!isPartialSync &&
|
|
384
|
+
isUserCodexScope(scopeRoot, options) &&
|
|
385
|
+
materializationTargets.length > 0) {
|
|
386
|
+
const canonicalBaseRoles = new Set(canonicalEntries
|
|
387
|
+
.filter((entry) => entry.type === 'agent' && entry.isFile)
|
|
388
|
+
.map((entry) => entry.name.replace(/\.md$/i, '')));
|
|
389
|
+
const missingBaseRoles = SUPPORTED_CODEX_BASE_ROLES.filter((role) => !canonicalBaseRoles.has(role));
|
|
390
|
+
if (missingBaseRoles.length > 0) {
|
|
391
|
+
throw new CliError(`Bundled managed Codex role definitions are unavailable for user sync: ${missingBaseRoles.join(', ')}. Refusing stale user-role cleanup.`);
|
|
392
|
+
}
|
|
393
|
+
}
|
|
284
394
|
const desiredRoles = await desiredRolesFromCanonical(canonicalEntries.filter((entry) => canonicalPathAllowed(scopeRoot, entry, allowedCanonicalPaths)), scopeRoot, materializationTargets);
|
|
285
395
|
const desiredRoleNames = new Set(desiredRoles.map((role) => role.roleName));
|
|
286
396
|
const existingConfigPath = configPath(scopeRoot);
|
|
287
397
|
const existingConfigContent = await readOptionalFile(existingConfigPath);
|
|
288
398
|
const staleRoles = isPartialSync
|
|
289
399
|
? []
|
|
290
|
-
: await collectStaleManagedRoles(scopeRoot, existingConfigContent, desiredRoleNames);
|
|
400
|
+
: await collectStaleManagedRoles(scopeRoot, existingConfigContent, desiredRoleNames, isUserCodexScope(scopeRoot, options) ? 'user-config' : 'project-config', !isUserCodexScope(scopeRoot, options));
|
|
291
401
|
if (isPartialSync && desiredRoles.length === 0) {
|
|
292
402
|
return {
|
|
293
403
|
operations: [],
|
|
@@ -39,7 +39,19 @@ export interface ValidateMatrixCellOptions {
|
|
|
39
39
|
effort?: string;
|
|
40
40
|
} | null;
|
|
41
41
|
}
|
|
42
|
+
export interface CursorTaskProbeResult extends MatrixCellAvailabilityResult {
|
|
43
|
+
decisive: boolean;
|
|
44
|
+
evidence: 'task-probe' | 'subagent-allow-list' | 'none';
|
|
45
|
+
}
|
|
46
|
+
export interface CursorCatalogResult {
|
|
47
|
+
status: 'resolved' | 'unavailable' | 'failed';
|
|
48
|
+
candidates: string[];
|
|
49
|
+
sourceCommand: 'models' | 'list-models' | null;
|
|
50
|
+
diagnostic: string | null;
|
|
51
|
+
}
|
|
42
52
|
export declare function normalizeMatrixCellAvailability(result: MatrixCellAvailabilityResponse): MatrixCellAvailabilityResult;
|
|
53
|
+
export declare function probeCursorSubagentModel(value: string, options: ValidateMatrixCellOptions): Promise<CursorTaskProbeResult>;
|
|
54
|
+
export declare function resolveCursorModelCatalog(options: ValidateMatrixCellOptions): Promise<CursorCatalogResult>;
|
|
43
55
|
export declare function validateCursorSubagentModel(value: string, options: ValidateMatrixCellOptions): Promise<MatrixCellAvailabilityResult>;
|
|
44
56
|
export declare function validateMatrixCell(provider: string, value: string, options: ValidateMatrixCellOptions): Promise<MatrixCellAvailabilityResponse>;
|
|
45
57
|
//# sourceMappingURL=availability.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"availability.d.ts","sourceRoot":"","sources":["../../../src/providers/identity/availability.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,eAAe,GAAG,aAAa,CAAC;AAE/E,MAAM,WAAW,4BAA4B;IAC3C,YAAY,EAAE,sBAAsB,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,8BAA8B,GACtC,sBAAsB,GACtB,4BAA4B,CAAC;AAEjC,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,8BAA8B;IAC7C,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,cAAc,EAAE,CACd,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,qBAAqB,KAC3B,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnC,QAAQ,EAAE,CACR,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,eAAe,KACrB,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAED,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC,8BAA8B,CAAC,CAAC;IACvD,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,IAAI,CAAC;CACV;AAWD,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,8BAA8B,GACrC,4BAA4B,CAE9B;
|
|
1
|
+
{"version":3,"file":"availability.d.ts","sourceRoot":"","sources":["../../../src/providers/identity/availability.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,eAAe,GAAG,aAAa,CAAC;AAE/E,MAAM,WAAW,4BAA4B;IAC3C,YAAY,EAAE,sBAAsB,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,8BAA8B,GACtC,sBAAsB,GACtB,4BAA4B,CAAC;AAEjC,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,8BAA8B;IAC7C,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,cAAc,EAAE,CACd,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,qBAAqB,KAC3B,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnC,QAAQ,EAAE,CACR,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,eAAe,KACrB,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAED,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC,8BAA8B,CAAC,CAAC;IACvD,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,IAAI,CAAC;CACV;AAED,MAAM,WAAW,qBAAsB,SAAQ,4BAA4B;IACzE,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,YAAY,GAAG,qBAAqB,GAAG,MAAM,CAAC;CACzD;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,UAAU,GAAG,aAAa,GAAG,QAAQ,CAAC;IAC9C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,QAAQ,GAAG,aAAa,GAAG,IAAI,CAAC;IAC/C,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAWD,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,8BAA8B,GACrC,4BAA4B,CAE9B;AAwWD,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,qBAAqB,CAAC,CAwChC;AAED,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAkD9B;AAED,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,4BAA4B,CAAC,CAqBvC;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,8BAA8B,CAAC,CAuCzC"}
|