@msn-control/liftoff 0.11.3 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DEVELOPER.md +19 -18
- package/README.md +18 -18
- package/assets/governance/single-maintainer-gitflow/activation-v2-graph.json +1583 -0
- package/dist/adapters/credentials/github-enrollment.d.ts +51 -0
- package/dist/adapters/credentials/github-enrollment.js +226 -0
- package/dist/adapters/credentials/github-enrollment.js.map +1 -0
- package/dist/adapters/credentials/protected-input.d.ts +7 -0
- package/dist/adapters/credentials/protected-input.js +68 -0
- package/dist/adapters/credentials/protected-input.js.map +1 -0
- package/dist/adapters/filesystem/executables.d.ts +2 -0
- package/dist/adapters/filesystem/executables.js +70 -0
- package/dist/adapters/filesystem/executables.js.map +1 -0
- package/dist/adapters/filesystem/update-previews.d.ts +9 -0
- package/dist/adapters/filesystem/update-previews.js +44 -0
- package/dist/adapters/filesystem/update-previews.js.map +1 -1
- package/dist/adapters/filesystem/workstation-attempts.d.ts +13 -0
- package/dist/adapters/filesystem/workstation-attempts.js +78 -0
- package/dist/adapters/filesystem/workstation-attempts.js.map +1 -0
- package/dist/adapters/github/activation-rest.d.ts +40 -0
- package/dist/adapters/github/activation-rest.js +272 -0
- package/dist/adapters/github/activation-rest.js.map +1 -0
- package/dist/adapters/state/azure-blob.d.ts +43 -0
- package/dist/adapters/state/azure-blob.js +335 -0
- package/dist/adapters/state/azure-blob.js.map +1 -0
- package/dist/adapters/state/darwin-capabilities.d.ts +33 -0
- package/dist/adapters/state/darwin-capabilities.js +146 -0
- package/dist/adapters/state/darwin-capabilities.js.map +1 -0
- package/dist/adapters/state/darwin-native-host.d.ts +32 -0
- package/dist/adapters/state/darwin-native-host.js +294 -0
- package/dist/adapters/state/darwin-native-host.js.map +1 -0
- package/dist/adapters/state/darwin-profile.d.ts +6 -0
- package/dist/adapters/state/darwin-profile.js +56 -0
- package/dist/adapters/state/darwin-profile.js.map +1 -0
- package/dist/adapters/state/darwin-system-program.d.ts +1 -0
- package/dist/adapters/state/darwin-system-program.js +94 -0
- package/dist/adapters/state/darwin-system-program.js.map +1 -0
- package/dist/adapters/state/local-qualification.d.ts +16 -0
- package/dist/adapters/state/local-qualification.js +299 -0
- package/dist/adapters/state/local-qualification.js.map +1 -0
- package/dist/adapters/state/local.d.ts +25 -0
- package/dist/adapters/state/local.js +145 -0
- package/dist/adapters/state/local.js.map +1 -0
- package/dist/adapters/state/native-command.d.ts +21 -0
- package/dist/adapters/state/native-command.js +82 -0
- package/dist/adapters/state/native-command.js.map +1 -0
- package/dist/adapters/state/native-files.d.ts +2 -0
- package/dist/adapters/state/native-files.js +47 -0
- package/dist/adapters/state/native-files.js.map +1 -0
- package/dist/adapters/state/native-system.d.ts +38 -0
- package/dist/adapters/state/native-system.js +86 -0
- package/dist/adapters/state/native-system.js.map +1 -0
- package/dist/adapters/state/opentofu.d.ts +35 -0
- package/dist/adapters/state/opentofu.js +350 -0
- package/dist/adapters/state/opentofu.js.map +1 -0
- package/dist/adapters/state/owned-process.d.ts +43 -0
- package/dist/adapters/state/owned-process.js +252 -0
- package/dist/adapters/state/owned-process.js.map +1 -0
- package/dist/adapters/state/posix-lock-program.d.ts +1 -0
- package/dist/adapters/state/posix-lock-program.js +185 -0
- package/dist/adapters/state/posix-lock-program.js.map +1 -0
- package/dist/adapters/state/posix-native-lock.d.ts +15 -0
- package/dist/adapters/state/posix-native-lock.js +145 -0
- package/dist/adapters/state/posix-native-lock.js.map +1 -0
- package/dist/adapters/state/protected-workspace.d.ts +57 -0
- package/dist/adapters/state/protected-workspace.js +412 -0
- package/dist/adapters/state/protected-workspace.js.map +1 -0
- package/dist/application/context.d.ts +3 -0
- package/dist/application/diagnose/doctor.d.ts +5 -0
- package/dist/application/diagnose/doctor.js +21 -5
- package/dist/application/diagnose/doctor.js.map +1 -1
- package/dist/application/diagnose/generated-project.js +2 -7
- package/dist/application/diagnose/generated-project.js.map +1 -1
- package/dist/application/initialize/fixture.js +8 -1
- package/dist/application/initialize/fixture.js.map +1 -1
- package/dist/application/initialize/use-case.js +70 -36
- package/dist/application/initialize/use-case.js.map +1 -1
- package/dist/application/project/manifest.js +5 -4
- package/dist/application/project/manifest.js.map +1 -1
- package/dist/application/state-migration/execution.d.ts +32 -0
- package/dist/application/state-migration/execution.js +440 -0
- package/dist/application/state-migration/execution.js.map +1 -0
- package/dist/application/state-migration/index.d.ts +22 -0
- package/dist/application/state-migration/index.js +17 -0
- package/dist/application/state-migration/index.js.map +1 -0
- package/dist/application/state-migration/lifecycle.d.ts +3 -0
- package/dist/application/state-migration/lifecycle.js +149 -0
- package/dist/application/state-migration/lifecycle.js.map +1 -0
- package/dist/application/state-migration/planning.d.ts +7 -0
- package/dist/application/state-migration/planning.js +150 -0
- package/dist/application/state-migration/planning.js.map +1 -0
- package/dist/application/state-migration/recovery.d.ts +5 -0
- package/dist/application/state-migration/recovery.js +145 -0
- package/dist/application/state-migration/recovery.js.map +1 -0
- package/dist/application/state-migration/runtime.d.ts +32 -0
- package/dist/application/state-migration/runtime.js +188 -0
- package/dist/application/state-migration/runtime.js.map +1 -0
- package/dist/application/state-migration/service.d.ts +2 -0
- package/dist/application/state-migration/service.js +20 -0
- package/dist/application/state-migration/service.js.map +1 -0
- package/dist/application/update/inspection.d.ts +16 -2
- package/dist/application/update/inspection.js +76 -23
- package/dist/application/update/inspection.js.map +1 -1
- package/dist/application/update/migration-runtime.js +24 -11
- package/dist/application/update/migration-runtime.js.map +1 -1
- package/dist/application/update/output.d.ts +2 -0
- package/dist/application/update/output.js +11 -1
- package/dist/application/update/output.js.map +1 -1
- package/dist/application/update/revalidation-plan.d.ts +1 -0
- package/dist/application/update/revalidation-plan.js +25 -12
- package/dist/application/update/revalidation-plan.js.map +1 -1
- package/dist/application/update/revalidation.d.ts +4 -1
- package/dist/application/update/revalidation.js +62 -21
- package/dist/application/update/revalidation.js.map +1 -1
- package/dist/application/update/use-case.js +25 -17
- package/dist/application/update/use-case.js.map +1 -1
- package/dist/cli/args/definitions.js +11 -3
- package/dist/cli/args/definitions.js.map +1 -1
- package/dist/cli/args/parser.js +29 -3
- package/dist/cli/args/parser.js.map +1 -1
- package/dist/domain/governance/activation/approvals.d.ts +264 -7
- package/dist/domain/governance/activation/approvals.js +166 -23
- package/dist/domain/governance/activation/approvals.js.map +1 -1
- package/dist/domain/governance/activation/capabilities.js +5 -2
- package/dist/domain/governance/activation/capabilities.js.map +1 -1
- package/dist/domain/governance/activation/evidence.d.ts +2 -1
- package/dist/domain/governance/activation/evidence.js +64 -11
- package/dist/domain/governance/activation/evidence.js.map +1 -1
- package/dist/domain/governance/activation/graph.d.ts +11 -384
- package/dist/domain/governance/activation/graph.js +424 -379
- package/dist/domain/governance/activation/graph.js.map +1 -1
- package/dist/domain/governance/activation/inputs.d.ts +3 -1
- package/dist/domain/governance/activation/inputs.js +47 -6
- package/dist/domain/governance/activation/inputs.js.map +1 -1
- package/dist/domain/governance/activation/operations.d.ts +4 -1
- package/dist/domain/governance/activation/operations.js +110 -22
- package/dist/domain/governance/activation/operations.js.map +1 -1
- package/dist/domain/governance/activation/readiness.d.ts +10 -0
- package/dist/domain/governance/activation/readiness.js +77 -38
- package/dist/domain/governance/activation/readiness.js.map +1 -1
- package/dist/domain/governance/activation/types.d.ts +151 -9
- package/dist/domain/governance/activation/types.js +23 -1
- package/dist/domain/governance/activation/types.js.map +1 -1
- package/dist/domain/governance/activation/validators.d.ts +4 -1
- package/dist/domain/governance/activation/validators.js +419 -26
- package/dist/domain/governance/activation/validators.js.map +1 -1
- package/dist/domain/governance/policy/identity.d.ts +55 -13
- package/dist/domain/governance/policy/identity.js +28 -8
- package/dist/domain/governance/policy/identity.js.map +1 -1
- package/dist/domain/project/artifact-lifecycle.d.ts +2 -1
- package/dist/domain/project/artifact-lifecycle.js +7 -1
- package/dist/domain/project/artifact-lifecycle.js.map +1 -1
- package/dist/domain/project/catalog.d.ts +50 -1
- package/dist/domain/project/catalog.js +104 -4
- package/dist/domain/project/catalog.js.map +1 -1
- package/dist/domain/project/contracts.d.ts +9 -1
- package/dist/domain/project/infrastructure-layout.d.ts +1 -1
- package/dist/domain/project/infrastructure-layout.js +2 -1
- package/dist/domain/project/infrastructure-layout.js.map +1 -1
- package/dist/domain/project/manifest/governance.d.ts +1 -1
- package/dist/domain/project/manifest/governance.js +9 -10
- package/dist/domain/project/manifest/governance.js.map +1 -1
- package/dist/domain/project/planning.js +4 -5
- package/dist/domain/project/planning.js.map +1 -1
- package/dist/domain/repair/stateful-bounded.d.ts +1 -0
- package/dist/domain/repair/stateful-bounded.js +37 -0
- package/dist/domain/repair/stateful-bounded.js.map +1 -0
- package/dist/domain/repair/stateful-invariants.d.ts +28 -0
- package/dist/domain/repair/stateful-invariants.js +278 -0
- package/dist/domain/repair/stateful-invariants.js.map +1 -0
- package/dist/domain/repair/stateful.d.ts +690 -0
- package/dist/domain/repair/stateful.js +26 -0
- package/dist/domain/repair/stateful.js.map +1 -0
- package/dist/domain/workstation/constraints.d.ts +1 -0
- package/dist/domain/workstation/constraints.js.map +1 -1
- package/dist/domain/workstation/contracts.d.ts +42 -0
- package/dist/domain/workstation/contracts.js +2 -0
- package/dist/domain/workstation/contracts.js.map +1 -0
- package/dist/domain/workstation/executables.d.ts +19 -0
- package/dist/domain/workstation/executables.js +68 -0
- package/dist/domain/workstation/executables.js.map +1 -0
- package/dist/domain/workstation/versions.d.ts +8 -0
- package/dist/domain/workstation/versions.js +145 -0
- package/dist/domain/workstation/versions.js.map +1 -0
- package/dist/framework-adapters.d.ts +2 -0
- package/dist/framework-adapters.js +148 -22
- package/dist/framework-adapters.js.map +1 -1
- package/dist/framework-validation.d.ts +6 -0
- package/dist/framework-validation.js +89 -24
- package/dist/framework-validation.js.map +1 -1
- package/dist/generators/common/base.js +57 -17
- package/dist/generators/common/base.js.map +1 -1
- package/dist/governance-activation/activation-state.js +39 -7
- package/dist/governance-activation/activation-state.js.map +1 -1
- package/dist/governance-activation/authority-records.d.ts +4 -0
- package/dist/governance-activation/authority-records.js +24 -0
- package/dist/governance-activation/authority-records.js.map +1 -0
- package/dist/governance-activation/commands.d.ts +9 -1
- package/dist/governance-activation/commands.js +392 -97
- package/dist/governance-activation/commands.js.map +1 -1
- package/dist/governance-activation/compatibility.d.ts +11 -8
- package/dist/governance-activation/compatibility.js +37 -23
- package/dist/governance-activation/compatibility.js.map +1 -1
- package/dist/governance-activation/doctor.js +40 -16
- package/dist/governance-activation/doctor.js.map +1 -1
- package/dist/governance-activation/github-config.d.ts +17 -0
- package/dist/governance-activation/github-config.js +88 -0
- package/dist/governance-activation/github-config.js.map +1 -0
- package/dist/governance-activation/github-discovery.d.ts +18 -0
- package/dist/governance-activation/github-discovery.js +229 -0
- package/dist/governance-activation/github-discovery.js.map +1 -0
- package/dist/governance-activation/github-ports.d.ts +12 -0
- package/dist/governance-activation/github-ports.js +4 -0
- package/dist/governance-activation/github-ports.js.map +1 -0
- package/dist/governance-activation/github-publication.d.ts +3 -0
- package/dist/governance-activation/github-publication.js +190 -0
- package/dist/governance-activation/github-publication.js.map +1 -0
- package/dist/governance-activation/historical-common.d.ts +98 -0
- package/dist/governance-activation/historical-common.js +269 -0
- package/dist/governance-activation/historical-common.js.map +1 -0
- package/dist/governance-activation/historical-credential-policy.d.ts +3 -0
- package/dist/governance-activation/historical-credential-policy.js +91 -0
- package/dist/governance-activation/historical-credential-policy.js.map +1 -0
- package/dist/governance-activation/historical-inputs.d.ts +6 -0
- package/dist/governance-activation/historical-inputs.js +57 -0
- package/dist/governance-activation/historical-inputs.js.map +1 -0
- package/dist/governance-activation/historical-safety.d.ts +9 -0
- package/dist/governance-activation/historical-safety.js +102 -0
- package/dist/governance-activation/historical-safety.js.map +1 -0
- package/dist/governance-activation/historical-source-metadata.d.ts +31 -0
- package/dist/governance-activation/historical-source-metadata.js +55 -0
- package/dist/governance-activation/historical-source-metadata.js.map +1 -0
- package/dist/governance-activation/historical-state.d.ts +12 -50
- package/dist/governance-activation/historical-state.js +195 -308
- package/dist/governance-activation/historical-state.js.map +1 -1
- package/dist/governance-activation/historical-v1-auxiliary.d.ts +1 -0
- package/dist/governance-activation/historical-v1-auxiliary.js +43 -0
- package/dist/governance-activation/historical-v1-auxiliary.js.map +1 -0
- package/dist/governance-activation/historical-v1-phase-contracts.d.ts +31 -0
- package/dist/governance-activation/historical-v1-phase-contracts.js +46 -0
- package/dist/governance-activation/historical-v1-phase-contracts.js.map +1 -0
- package/dist/governance-activation/historical-v2.d.ts +53 -0
- package/dist/governance-activation/historical-v2.js +313 -0
- package/dist/governance-activation/historical-v2.js.map +1 -0
- package/dist/governance-activation/history-contracts.d.ts +21 -12
- package/dist/governance-activation/history-contracts.js +99 -27
- package/dist/governance-activation/history-contracts.js.map +1 -1
- package/dist/governance-activation/inputs.d.ts +8 -2
- package/dist/governance-activation/inputs.js +41 -6
- package/dist/governance-activation/inputs.js.map +1 -1
- package/dist/governance-activation/migration-history.d.ts +43 -5
- package/dist/governance-activation/migration-history.js +231 -50
- package/dist/governance-activation/migration-history.js.map +1 -1
- package/dist/governance-activation/migration.d.ts +7 -4
- package/dist/governance-activation/migration.js +53 -252
- package/dist/governance-activation/migration.js.map +1 -1
- package/dist/governance-activation/phase-azure.d.ts +3 -0
- package/dist/governance-activation/phase-azure.js +205 -0
- package/dist/governance-activation/phase-azure.js.map +1 -0
- package/dist/governance-activation/phase-bootstrap-state.js +3 -0
- package/dist/governance-activation/phase-bootstrap-state.js.map +1 -1
- package/dist/governance-activation/phase-github.d.ts +3 -0
- package/dist/governance-activation/phase-github.js +192 -0
- package/dist/governance-activation/phase-github.js.map +1 -0
- package/dist/governance-activation/phase-governance.js +8 -2
- package/dist/governance-activation/phase-governance.js.map +1 -1
- package/dist/governance-activation/public-plans.d.ts +36 -0
- package/dist/governance-activation/public-plans.js +100 -0
- package/dist/governance-activation/public-plans.js.map +1 -0
- package/dist/governance-activation/read-only.d.ts +3 -1
- package/dist/governance-activation/read-only.js +7 -3
- package/dist/governance-activation/read-only.js.map +1 -1
- package/dist/governance-activation/reconciliation.js +10 -0
- package/dist/governance-activation/reconciliation.js.map +1 -1
- package/dist/governance-activation/seed-lifecycle.js +14 -25
- package/dist/governance-activation/seed-lifecycle.js.map +1 -1
- package/dist/governance-activation/source-of-truth.d.ts +21 -5
- package/dist/governance-activation/source-of-truth.js +102 -13
- package/dist/governance-activation/source-of-truth.js.map +1 -1
- package/dist/governance-activation/task-projection.d.ts +4 -1
- package/dist/governance-activation/task-projection.js +32 -3
- package/dist/governance-activation/task-projection.js.map +1 -1
- package/dist/governance-activation/task-writes.d.ts +42 -0
- package/dist/governance-activation/task-writes.js +250 -0
- package/dist/governance-activation/task-writes.js.map +1 -0
- package/dist/governance-activation/transition-files.d.ts +12 -0
- package/dist/governance-activation/transition-files.js +109 -0
- package/dist/governance-activation/transition-files.js.map +1 -0
- package/dist/governance-activation/transition-planning.d.ts +3 -1
- package/dist/governance-activation/transition-planning.js +158 -20
- package/dist/governance-activation/transition-planning.js.map +1 -1
- package/dist/governance-activation/transition-ports.d.ts +31 -3
- package/dist/governance-activation/transition-records.d.ts +11 -1
- package/dist/governance-activation/transition-records.js +52 -6
- package/dist/governance-activation/transition-records.js.map +1 -1
- package/dist/governance-activation/transitions.d.ts +5 -0
- package/dist/governance-activation/transitions.js +271 -37
- package/dist/governance-activation/transitions.js.map +1 -1
- package/dist/governance-assessment/engine.js +22 -15
- package/dist/governance-assessment/engine.js.map +1 -1
- package/dist/governance-assessment/project.d.ts +2 -0
- package/dist/governance-assessment/project.js +2 -1
- package/dist/governance-assessment/project.js.map +1 -1
- package/dist/interactive.d.ts +0 -1
- package/dist/interactive.js +3 -22
- package/dist/interactive.js.map +1 -1
- package/dist/openspec-profile.d.ts +2 -1
- package/dist/openspec-profile.js +11 -41
- package/dist/openspec-profile.js.map +1 -1
- package/dist/repository-governance.d.ts +10 -5
- package/dist/repository-governance.js +178 -92
- package/dist/repository-governance.js.map +1 -1
- package/dist/telemetry/contract.d.ts +1 -1
- package/dist/telemetry/contract.js +3 -0
- package/dist/telemetry/contract.js.map +1 -1
- package/dist/workstation-catalog.d.ts +13 -1
- package/dist/workstation-catalog.js +122 -0
- package/dist/workstation-catalog.js.map +1 -1
- package/dist/workstation.d.ts +69 -14
- package/dist/workstation.js +600 -215
- package/dist/workstation.js.map +1 -1
- package/docs/cli-reference.md +59 -21
- package/docs/configuration-and-manifests.md +9 -8
- package/docs/prerequisites.md +93 -18
- package/docs/repository-governance.md +68 -40
- package/docs/spec-workflows-and-agents.md +132 -13
- package/package.json +1 -1
package/dist/openspec-profile.js
CHANGED
|
@@ -1,33 +1,7 @@
|
|
|
1
|
+
import { OPEN_SPEC_AGENT_SURFACES, OPEN_SPEC_SKILL_NAMES, OPEN_SPEC_WORKFLOW_IDS } from './domain/project/catalog.js';
|
|
2
|
+
export { OPEN_SPEC_AGENT_SURFACES, OPEN_SPEC_WORKFLOW_IDS };
|
|
1
3
|
export const OPEN_SPEC_PROFILE = 'custom';
|
|
2
4
|
export const OPEN_SPEC_DELIVERY = 'both';
|
|
3
|
-
export const OPEN_SPEC_WORKFLOW_IDS = [
|
|
4
|
-
'propose',
|
|
5
|
-
'explore',
|
|
6
|
-
'new',
|
|
7
|
-
'continue',
|
|
8
|
-
'apply',
|
|
9
|
-
'update',
|
|
10
|
-
'ff',
|
|
11
|
-
'sync',
|
|
12
|
-
'archive',
|
|
13
|
-
'bulk-archive',
|
|
14
|
-
'verify',
|
|
15
|
-
'onboard'
|
|
16
|
-
];
|
|
17
|
-
const OPEN_SPEC_SKILL_NAMES = {
|
|
18
|
-
propose: 'openspec-propose',
|
|
19
|
-
explore: 'openspec-explore',
|
|
20
|
-
new: 'openspec-new-change',
|
|
21
|
-
continue: 'openspec-continue-change',
|
|
22
|
-
apply: 'openspec-apply-change',
|
|
23
|
-
update: 'openspec-update-change',
|
|
24
|
-
ff: 'openspec-ff-change',
|
|
25
|
-
sync: 'openspec-sync-specs',
|
|
26
|
-
archive: 'openspec-archive-change',
|
|
27
|
-
'bulk-archive': 'openspec-bulk-archive-change',
|
|
28
|
-
verify: 'openspec-verify-change',
|
|
29
|
-
onboard: 'openspec-onboard'
|
|
30
|
-
};
|
|
31
5
|
export const OPEN_SPEC_COPILOT_CLOUD_PATHS = [
|
|
32
6
|
['.github', 'workflows', 'copilot-setup-steps.yml'],
|
|
33
7
|
['.github', 'agents', 'openspec.agent.md']
|
|
@@ -154,19 +128,15 @@ export async function configureOpenSpecProfile(executable, runner, options = {})
|
|
|
154
128
|
return inspection;
|
|
155
129
|
}
|
|
156
130
|
export function openSpecIntegrationPaths(agent) {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
['.github', 'prompts', `opsx-${workflow}.prompt.md`]
|
|
161
|
-
]);
|
|
162
|
-
}
|
|
163
|
-
if (agent === 'claude') {
|
|
164
|
-
return OPEN_SPEC_WORKFLOW_IDS.flatMap((workflow) => [
|
|
165
|
-
['.claude', 'skills', OPEN_SPEC_SKILL_NAMES[workflow], 'SKILL.md'],
|
|
166
|
-
['.claude', 'commands', 'opsx', `${workflow}.md`]
|
|
167
|
-
]);
|
|
131
|
+
const surface = OPEN_SPEC_AGENT_SURFACES[agent];
|
|
132
|
+
if (!surface) {
|
|
133
|
+
throw new OpenSpecProfileError(`Unsupported OpenSpec agent: ${agent}`);
|
|
168
134
|
}
|
|
169
|
-
|
|
170
|
-
|
|
135
|
+
return OPEN_SPEC_WORKFLOW_IDS.flatMap((workflow) => [
|
|
136
|
+
[...surface.skillsRoot, OPEN_SPEC_SKILL_NAMES[workflow], 'SKILL.md'],
|
|
137
|
+
...(surface.commands
|
|
138
|
+
? [[...surface.commands.root, `${surface.commands.prefix}${workflow}${surface.commands.suffix}`]]
|
|
139
|
+
: [])
|
|
140
|
+
]);
|
|
171
141
|
}
|
|
172
142
|
//# sourceMappingURL=openspec-profile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openspec-profile.js","sourceRoot":"","sources":["../src/openspec-profile.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openspec-profile.js","sourceRoot":"","sources":["../src/openspec-profile.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,CAAC;AAE5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAC1C,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAEzC,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,CAAC,SAAS,EAAE,WAAW,EAAE,yBAAyB,CAAC;IACnD,CAAC,SAAS,EAAE,QAAQ,EAAE,mBAAmB,CAAC;CAClC,CAAC;AAmBX,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED,SAAS,cAAc,CACrB,MAAc,EACd,OAAwB,EACxB,MAAiD;IAEjD,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ;QAC5B,CAAC,CAAC,mBAAmB;QACrB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,YAAY;YACnB,eAAe,MAAM,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;IAChD,OAAO,IAAI,oBAAoB,CAAC,GAAG,MAAM,YAAY,OAAO,KAAK,MAAM,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAY,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,oBAAoB,CAC5B,qDAAqD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC9G,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,oBAAoB,CAAC,uDAAuD,CAAC,CAAC;IAC1F,CAAC;IACD,MAAM,MAAM,GAAG,MAAiC,CAAC;IACjD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,IAAI,oBAAoB,CAAC,mEAAmE,CAAC,CAAC;IACtG,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,oBAAoB,CAAC,oEAAoE,CAAC,CAAC;IACvG,CAAC;IACD,IACE,MAAM,CAAC,SAAS,KAAK,SAAS;QAC9B,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;YAC/B,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,EACpE,CAAC;QACD,MAAM,IAAI,oBAAoB,CAC5B,gFAAgF,CACjF,CAAC;IACJ,CAAC;IACD,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,SAAS,EAAE,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,CAAa;KACnF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAA4B;IACjE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS,sBAAsB,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrF,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACjF,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC,CAAC;IAC5G,MAAM,WAAW,GAAG;QAClB,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,iBAAiB;YACrC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACzF,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,kBAAkB;YACvC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC5F,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACzG,CAAC;IACF,OAAO;QACL,KAAK;QACL,UAAU,EAAE,WAAW,CAAC,MAAM,KAAK,CAAC;YAClC,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,sBAAsB,CAAC,MAAM;QAC1D,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,UAAU,GAAG,UAAU;IACrE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,UAAU,GAAG,UAAU;IACvE,OAAO;QACL;YACE,UAAU;YACV,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;SAC7E;QACD;YACE,UAAU;YACV,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,kBAAkB,CAAC;SACxD;QACD;YACE,UAAU;YACV,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,CAAC;SACtD;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAkB,EAClB,MAAqB,EACrB,OAAO,GAAkC,EAAE;IAE3C,MAAM,OAAO,GAAG,+BAA+B,CAAC,UAAU,CAAC,CAAC;IAC5D,OAAO,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE;QACvC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,SAAS,EAAE,MAAM;KAClB,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC3C,MAAM,cAAc,CAAC,oCAAoC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,sBAAsB,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,UAAkB,EAClB,MAAqB,EACrB,OAAO,GAAkC,EAAE;IAE3C,KAAK,MAAM,OAAO,IAAI,iCAAiC,CAAC,UAAU,CAAC,EAAE,CAAC;QACpE,OAAO,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE;YACvC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC3C,MAAM,cAAc,CAAC,uCAAuC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7E,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAC3B,MAAM,IAAI,oBAAoB,CAC5B,gDAAgD,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpF,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAoB;IAC3D,MAAM,OAAO,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,oBAAoB,CAAC,+BAA+B,KAAK,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,sBAAsB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;QAClD,CAAC,GAAG,OAAO,CAAC,UAAU,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC;QACpE,GAAG,CAAC,OAAO,CAAC,QAAQ;YAClB,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACjG,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { governanceAgentIntegrations } from './domain/project/catalog.js';
|
|
2
|
+
export { governanceAgentIntegrations };
|
|
1
3
|
import type { GeneratedArtifact, ProjectPlan } from './domain/project/contracts.js';
|
|
2
4
|
export declare const governancePolicySchemaVersion: 1;
|
|
3
5
|
export declare const governancePolicyVersion: '6';
|
|
4
6
|
export declare const governanceContextSchemaVersion: 1;
|
|
7
|
+
export declare function governanceInvocationGuide(plan: Pick<ProjectPlan, 'agents'>, operation?: 'setup' | 'assessment'): string;
|
|
5
8
|
export declare const governanceArtifactPaths: {
|
|
6
9
|
readonly policy: readonly ['.liftoff', 'governance', 'policy.md'];
|
|
7
10
|
readonly context: readonly ['.liftoff', 'governance', 'context.json'];
|
|
@@ -10,12 +13,14 @@ export declare const governanceArtifactPaths: {
|
|
|
10
13
|
readonly compatibility: readonly ['.liftoff', 'governance', 'compatibility.json'];
|
|
11
14
|
readonly credentialPolicySchema: readonly ['.liftoff', 'governance', 'credential-policy.schema.json'];
|
|
12
15
|
readonly setup: {
|
|
13
|
-
readonly 'github-copilot': readonly [
|
|
14
|
-
readonly claude: readonly [
|
|
16
|
+
readonly 'github-copilot': readonly [".github", "prompts", "liftoff-setup.prompt.md"];
|
|
17
|
+
readonly claude: readonly [".claude", "commands", "liftoff-setup.md"];
|
|
18
|
+
readonly codex: readonly [".agents", "skills", "liftoff-setup", "SKILL.md"];
|
|
15
19
|
};
|
|
16
20
|
readonly assessment: {
|
|
17
|
-
readonly 'github-copilot': readonly [
|
|
18
|
-
readonly claude: readonly [
|
|
21
|
+
readonly 'github-copilot': readonly [".github", "prompts", "liftoff-governance-assess.prompt.md"];
|
|
22
|
+
readonly claude: readonly [".claude", "commands", "liftoff-governance-assess.md"];
|
|
23
|
+
readonly codex: readonly [".agents", "skills", "liftoff-governance-assess", "SKILL.md"];
|
|
19
24
|
};
|
|
20
25
|
};
|
|
21
26
|
export declare function renderCanonicalGovernancePolicy(): string;
|
|
@@ -27,5 +32,5 @@ export interface GovernanceContextOptions {
|
|
|
27
32
|
}
|
|
28
33
|
export declare function validateGovernanceContext(value: unknown): void;
|
|
29
34
|
export declare function renderGovernanceContext(plan: ProjectPlan, options?: GovernanceContextOptions): string;
|
|
30
|
-
export declare function renderGovernanceAssessmentGuide(): string;
|
|
35
|
+
export declare function renderGovernanceAssessmentGuide(plan?: Pick<ProjectPlan, 'agents'>): string;
|
|
31
36
|
export declare function buildRepositoryGovernanceArtifacts(plan: ProjectPlan): GeneratedArtifact[];
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { governanceAgentIntegrations } from './domain/project/catalog.js';
|
|
3
|
+
import { managedCoreLogicalNames } from './domain/project/artifact-lifecycle.js';
|
|
4
|
+
export { governanceAgentIntegrations };
|
|
2
5
|
import { packagedSupportedStack as supportedStack } from './adapters/packaged-assets/supported-stack.js';
|
|
3
6
|
import { resolvePackageFileUrl } from './adapters/packaged-assets/package-root.js';
|
|
4
7
|
import { canonicalJson } from './governance-activation/canonical-json.js';
|
|
@@ -9,18 +12,14 @@ import { runnerPreflightDisplayNameTemplate, runnerPreflightOrganizationPermissi
|
|
|
9
12
|
export const governancePolicySchemaVersion = 1;
|
|
10
13
|
export const governancePolicyVersion = '6';
|
|
11
14
|
export const governanceContextSchemaVersion = 1;
|
|
12
|
-
const governanceManagedCoreLogicalNames =
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
'
|
|
19
|
-
|
|
20
|
-
'liftoff-setup-claude',
|
|
21
|
-
'liftoff-governance-assess-copilot',
|
|
22
|
-
'liftoff-governance-assess-claude'
|
|
23
|
-
];
|
|
15
|
+
const governanceManagedCoreLogicalNames = managedCoreLogicalNames;
|
|
16
|
+
export function governanceInvocationGuide(plan, operation = 'setup') {
|
|
17
|
+
if (plan.agents.length === 0) {
|
|
18
|
+
const name = operation === 'setup' ? 'liftoff-setup' : 'liftoff-governance-assess';
|
|
19
|
+
return `No native \`${name}\` integration is recorded.`;
|
|
20
|
+
}
|
|
21
|
+
return plan.agents.map((agent) => `${agent.label}: \`${governanceAgentIntegrations[agent.id][operation].invocation}\``).join('; ');
|
|
22
|
+
}
|
|
24
23
|
export const governanceArtifactPaths = {
|
|
25
24
|
policy: ['.liftoff', 'governance', 'policy.md'],
|
|
26
25
|
context: ['.liftoff', 'governance', 'context.json'],
|
|
@@ -29,12 +28,14 @@ export const governanceArtifactPaths = {
|
|
|
29
28
|
compatibility: ['.liftoff', 'governance', 'compatibility.json'],
|
|
30
29
|
credentialPolicySchema: ['.liftoff', 'governance', 'credential-policy.schema.json'],
|
|
31
30
|
setup: {
|
|
32
|
-
'github-copilot': ['
|
|
33
|
-
claude:
|
|
31
|
+
'github-copilot': governanceAgentIntegrations['github-copilot'].setup.pathParts,
|
|
32
|
+
claude: governanceAgentIntegrations.claude.setup.pathParts,
|
|
33
|
+
codex: governanceAgentIntegrations.codex.setup.pathParts
|
|
34
34
|
},
|
|
35
35
|
assessment: {
|
|
36
|
-
'github-copilot': ['
|
|
37
|
-
claude:
|
|
36
|
+
'github-copilot': governanceAgentIntegrations['github-copilot'].assessment.pathParts,
|
|
37
|
+
claude: governanceAgentIntegrations.claude.assessment.pathParts,
|
|
38
|
+
codex: governanceAgentIntegrations.codex.assessment.pathParts
|
|
38
39
|
}
|
|
39
40
|
};
|
|
40
41
|
const suppliedPolicy = readFileSync(resolvePackageFileUrl('assets', 'governance', 'single-maintainer-gitflow', 'policy.md'), 'utf8').replace(/\r\n/g, '\n').trimEnd();
|
|
@@ -714,38 +715,71 @@ export function renderGovernanceContext(plan, options = {}) {
|
|
|
714
715
|
return rendered;
|
|
715
716
|
}
|
|
716
717
|
function renderGovernanceGuide(plan) {
|
|
717
|
-
const launchers = plan.agents.map((agent) => agent.id
|
|
718
|
-
|
|
719
|
-
|
|
718
|
+
const launchers = plan.agents.map((agent) => `- ${agent.label}: \`${governanceAgentIntegrations[agent.id].setup.invocation}\`.`).join('\n');
|
|
719
|
+
const primaryAgent = plan.agents.find((agent) => agent.id === plan.defaultAgent?.id) ?? plan.agents[0];
|
|
720
|
+
const primary = primaryAgent ? governanceAgentIntegrations[primaryAgent.id] : undefined;
|
|
721
|
+
const nextAction = primary ? `## Next action after init
|
|
722
|
+
|
|
723
|
+
From this project, enter the native setup invocation in a selected coding agent,
|
|
724
|
+
not in a shell. Do not reinitialize the application.
|
|
725
|
+
|
|
726
|
+
\`\`\`text
|
|
727
|
+
${primary.setup.invocation}
|
|
728
|
+
\`\`\`
|
|
729
|
+
|
|
730
|
+
Use the generated setup integration from any selected agent:
|
|
731
|
+
|
|
732
|
+
${launchers}` : `## Legacy project handoff
|
|
733
|
+
|
|
734
|
+
No native setup integration is recorded for this legacy project. This managed-core
|
|
735
|
+
update does not initialize the framework or install coding-agent integrations.
|
|
736
|
+
Inspect the current local boundary without executing setup:
|
|
737
|
+
|
|
738
|
+
\`\`\`bash
|
|
739
|
+
liftoff governance status --scope local --json
|
|
740
|
+
\`\`\`
|
|
741
|
+
|
|
742
|
+
Review the CLI's supported diagnostics and separately approved framework adoption
|
|
743
|
+
requirements. The journey below applies only after the required framework and
|
|
744
|
+
native integration are established; no agent or prior completion is inferred.`;
|
|
720
745
|
return `# Liftoff deterministic setup
|
|
721
746
|
|
|
722
|
-
State:
|
|
747
|
+
State: **${primary ? 'managed setup generated' : 'managed handoff generated; no native integration recorded'}; live enforcement is not active**.
|
|
723
748
|
|
|
724
749
|
Liftoff generated deterministic policy and workload context only. It did not
|
|
725
750
|
create or change branches, commits, tags, remotes, pull requests, releases,
|
|
726
751
|
rulesets, GitHub settings, security features, environments, runners, cloud
|
|
727
752
|
resources, deployments, monitoring, alerts, or Slack routes.
|
|
728
753
|
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
\`\`\`text
|
|
732
|
-
liftoff init ${plan.safeProjectName}
|
|
733
|
-
cd ${plan.safeProjectName}
|
|
734
|
-
/liftoff-setup
|
|
735
|
-
\`\`\`
|
|
736
|
-
|
|
737
|
-
Use the generated setup integration from any selected agent:
|
|
738
|
-
|
|
739
|
-
${launchers}
|
|
754
|
+
${nextAction}
|
|
740
755
|
|
|
741
756
|
## What setup does
|
|
742
757
|
|
|
743
|
-
|
|
744
|
-
\`liftoff governance status
|
|
758
|
+
\`liftoff-setup\` delegates every transition to the Liftoff CLI, beginning with
|
|
759
|
+
\`liftoff governance status --scope local --json\`. The CLI resolves
|
|
745
760
|
the project root, loads \`phase-graph.json\`, validates policy ${governancePolicyVersion},
|
|
746
|
-
and
|
|
761
|
+
and uses activation contract ${activationContractVersion} from package
|
|
762
|
+
${liftoffActivationPackageVersion}. Native integration changes use managed content
|
|
763
|
+
hashes, not an independent version.
|
|
764
|
+
|
|
765
|
+
Prefer the CLI's supported \`nextActions\`: preserve each \`command.executable\`,
|
|
766
|
+
argument array, \`cwd\`, \`scope\`, and \`approvalRequired\`. A
|
|
767
|
+
\`nextPlannablePhase\` can be previewed before approval; execution uses only a
|
|
768
|
+
currently ready action with its required authority. Never invent flags or edit
|
|
769
|
+
approval/state JSON.
|
|
770
|
+
Unscoped governance commands default to activation; local inspection, execution,
|
|
771
|
+
and verification must retain \`--scope local\`. Supported scopes are \`local\`,
|
|
772
|
+
\`activation\`, and \`lifecycle\`.
|
|
773
|
+
\`governance plan\` saves a disclosed external preview, not approval, and does not
|
|
774
|
+
execute its proposed effects. \`apply-next\` without \`--execute\` is strictly
|
|
775
|
+
read-only. When public planning inputs are requested, follow the reported
|
|
776
|
+
\`--inputs <public-json-file>\` action and its documented public schema; never
|
|
777
|
+
put credentials or invented approval/state records in that file.
|
|
778
|
+
${plan.agents.some((agent) => agent.id === 'codex')
|
|
779
|
+
? 'Codex skills use their dollar-prefixed names or the `/skills` picker, not global custom prompts.\n'
|
|
780
|
+
: ''}
|
|
747
781
|
|
|
748
|
-
Before
|
|
782
|
+
Before publication and activation, setup verifies the deterministic baseline seed:
|
|
749
783
|
\`liftoff validate\`, applicable backend tests, frontend build,
|
|
750
784
|
\`docker compose config -q\`, \`tofu fmt -check -recursive\`,
|
|
751
785
|
\`tofu init -backend=false\`, \`tofu validate\`, and strict ${plan.specWorkflow.label}
|
|
@@ -755,22 +789,47 @@ ${plan.specWorkflow.id === 'openspec'
|
|
|
755
789
|
? 'OpenSpec bootstrap seed was synchronized and archived.'
|
|
756
790
|
: 'real Spec Kit bundle at `specs/000-liftoff-bootstrap/` was finalized locally, without an OpenSpec archive or new Git branch.'}
|
|
757
791
|
It does not mean product behavior, infrastructure, or enforcement exists.
|
|
792
|
+
Local-ready is a milestone, not the end of a requested full journey. After local
|
|
793
|
+
verification, present \`liftoff governance plan --scope activation --json\` and
|
|
794
|
+
continue only through separately approved actions. A local-only request or
|
|
795
|
+
declined later authority preserves local completion without publication or
|
|
796
|
+
provider effects.
|
|
758
797
|
An older Spec Kit project without that bundle needs separately reviewed seed
|
|
759
798
|
adoption; update, force, and assessment never create it or infer completion.
|
|
799
|
+
If stateful repair is required to reach local conformance, offer its distinct
|
|
800
|
+
approved migration branch. It is not local-only work and cannot run under local
|
|
801
|
+
repair approval.
|
|
760
802
|
|
|
761
|
-
Questions are limited to
|
|
762
|
-
|
|
763
|
-
|
|
803
|
+
Questions are limited to exact repair/migration plans, state-read authority,
|
|
804
|
+
independent tool/dependency/global-profile permissions, repository publication,
|
|
805
|
+
credentials, billed resources or policy exceptions, final enforcement,
|
|
806
|
+
destructive recovery/cleanup, and external blockers.
|
|
807
|
+
Use the CLI-provided repair preview and eligibility actions, never a fresh
|
|
808
|
+
starter copied over the project or fabricated machine metadata. Local repair
|
|
809
|
+
approval does not authorize sensitive-state reads, backend writes, or resources.
|
|
810
|
+
Unknown or unsupported transformations stay plan-only.
|
|
811
|
+
Only explicit execution retries repaired local failures; status,
|
|
764
812
|
resume, and verify remain read-only. Current unchanged proof may be reused.
|
|
765
|
-
|
|
766
|
-
|
|
813
|
+
Do not repeat an unchanged failure or ineffective installer. Actual missing
|
|
814
|
+
capabilities, permissions, quota, or execution paths remain resumable blockers.
|
|
815
|
+
|
|
816
|
+
Schema-2 results distinguish \`scope\`, \`localSetup\`, \`activation\`,
|
|
817
|
+
\`migration\`, and \`lifecycle\`. Verification exits 0 for a consistent complete
|
|
818
|
+
selected scope, 2 for consistent incomplete progress, and 1 for inconsistency or
|
|
819
|
+
inspection failure. Status, plan, and resume can exit 0 while work remains.
|
|
820
|
+
\`selectedPhase\` identifies the attempt; \`executedPhase\` records success;
|
|
821
|
+
\`nextReadyPhase\` comes from post-operation inspection. If an operation committed
|
|
822
|
+
but inspection failed, retain that partial outcome and indeterminate readiness.
|
|
823
|
+
Use only the reported reviewed recovery action, never a blind retry or assumed
|
|
824
|
+
rollback of remote effects.
|
|
767
825
|
|
|
768
826
|
For an older supported activation, use \`liftoff update --check\` to review the
|
|
769
827
|
exact history-preserving migration. The check changes no project bytes but
|
|
770
828
|
discloses an external preview receipt. Explicitly approved update creates a
|
|
771
|
-
linked
|
|
772
|
-
|
|
773
|
-
|
|
829
|
+
linked v${activationContractVersion} successor from a declared v1/v2 source. Old state, plans,
|
|
830
|
+
evidence, and approvals remain historical, not current authorization.
|
|
831
|
+
Failed local revalidation retains blocked, resumable
|
|
832
|
+
v${activationContractVersion}. Repair the named cause and approve a fresh preview rather than reset history.
|
|
774
833
|
Only the named local revalidation is automatic; no provider, commit, or push is
|
|
775
834
|
authorized by the migration plan. \`--json\` is optional formatting, and CI
|
|
776
835
|
approval uses \`--approve-plan <fingerprint>\`. Force cannot bypass these gates.
|
|
@@ -781,23 +840,40 @@ fine-grained PAT is required, use display name
|
|
|
781
840
|
\`${runnerPreflightDisplayNameTemplate}\`, secret
|
|
782
841
|
\`${runnerPreflightSecretName}\`, 30-day lifetime, current repository only,
|
|
783
842
|
repository metadata read, organization hosted-runner and network-configuration
|
|
784
|
-
read, no writes, and the recorded workflow/job allowlist.
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
843
|
+
read, no writes, and the recorded workflow/job allowlist.
|
|
844
|
+
Use the CLI-provided \`liftoff governance approve --plan <fingerprint>\` only
|
|
845
|
+
after the developer explicitly approves the exact displayed plan; never
|
|
846
|
+
automatically approve it. Approval persists authority but does not execute.
|
|
847
|
+
Credential enrollment uses \`liftoff governance credential-enroll --plan <fingerprint>\`
|
|
848
|
+
through the private operator channel. Automation must explicitly select
|
|
849
|
+
\`--protected-stdin\` and supply the value through an operator-controlled protected
|
|
850
|
+
channel, never chat or argv. Observe actual permitted use/readback,
|
|
851
|
+
not just a secret name. Never paste or show a credential in chat, argv,
|
|
852
|
+
command arguments, logs, evidence, source files, or screenshots. A leaked value must be
|
|
788
853
|
revoked and rotated through its owner-controlled system, not fabricated state.
|
|
789
854
|
|
|
790
855
|
Live status must be proven from user-owned activation evidence and GitHub
|
|
791
856
|
read-back, never inferred from these local files.
|
|
857
|
+
Full immediate setup is complete only when requested migration and actual
|
|
858
|
+
deployment, qualification, and matching live enforcement are verified.
|
|
859
|
+
Future retained-state disposal and other \`lifecycle\` obligations stay visible
|
|
860
|
+
separately; activation does not wait for a retention deadline.
|
|
792
861
|
|
|
793
|
-
${renderGovernanceAssessmentGuide()}
|
|
862
|
+
${renderGovernanceAssessmentGuide(plan)}
|
|
794
863
|
`;
|
|
795
864
|
}
|
|
796
|
-
export function renderGovernanceAssessmentGuide() {
|
|
865
|
+
export function renderGovernanceAssessmentGuide(plan) {
|
|
866
|
+
const setup = plan ? governanceInvocationGuide(plan) : 'Copilot/Claude: `/liftoff-setup`; Codex: `$liftoff-setup`';
|
|
867
|
+
const assessment = plan ? governanceInvocationGuide(plan, 'assessment') : 'Copilot/Claude: `/liftoff-governance-assess`; Codex: `$liftoff-governance-assess`';
|
|
868
|
+
const entryPoint = plan?.agents.length === 0
|
|
869
|
+
? `No native setup or assessment integration is recorded for this legacy project.
|
|
870
|
+
Managed-core maintenance does not initialize the framework or install integrations.
|
|
871
|
+
For a read-only comparison, use the CLI directly:`
|
|
872
|
+
: `Native setup (${setup}) remains the primary post-init path. For a separate
|
|
873
|
+
comparison, use ${assessment}, or run:`;
|
|
797
874
|
return `## Read-only governance assessment
|
|
798
875
|
|
|
799
|
-
|
|
800
|
-
use \`/liftoff-governance-assess\` in a selected agent or run:
|
|
876
|
+
${entryPoint}
|
|
801
877
|
|
|
802
878
|
\`\`\`bash
|
|
803
879
|
liftoff governance assess --json
|
|
@@ -835,7 +911,7 @@ stale evidence, and unsupported evaluators remain visible coverage gaps, not
|
|
|
835
911
|
proof of absence or alignment.
|
|
836
912
|
Azure scope and evidence-backed applicability require a current active-baseline
|
|
837
913
|
and referenced, validated saved-plan/evidence receipts that bind their canonical
|
|
838
|
-
payload and readback body to current inputs. Placeholder digests, historical v1
|
|
914
|
+
payload and readback body to current inputs. Placeholder digests, historical v1/v2
|
|
839
915
|
receipts, future-dated approvals, and inferred bindings cannot establish proof. Missing
|
|
840
916
|
bindings stay \`not-observed\`; do not fabricate or hand-edit activation state,
|
|
841
917
|
baselines, receipts, or evidence to make assessment pass. Collect missing proof
|
|
@@ -864,9 +940,11 @@ Exit 2 is advisory, not permission to repair anything.
|
|
|
864
940
|
Assessment writes reports to stdout only. It never updates or upgrades anything,
|
|
865
941
|
changes project files, Git, activation state, approvals, or evidence, or runs
|
|
866
942
|
recommendations. Reports cannot complete Phase 0 or any other phase.
|
|
867
|
-
For compatible older inventories,
|
|
943
|
+
For compatible older inventories, restore an already selected Liftoff integration
|
|
868
944
|
through \`liftoff update --check\`, then \`liftoff update\` with explicit approval
|
|
869
945
|
of the matching plan. Check discloses its external preview receipt; it is not approval.
|
|
946
|
+
Adding another agent instead requires \`liftoff repair --check --add-agents codex\`
|
|
947
|
+
and its own exact-plan approval; ordinary update does not install framework integrations.
|
|
870
948
|
Unowned collisions stay unowned even with \`--force\`; modified managed entries
|
|
871
949
|
retain the existing reviewed force rules. Neither installation nor assessment
|
|
872
950
|
activates governance. Unsupported mappings remain diagnostic: no migration is
|
|
@@ -875,36 +953,50 @@ or overwrite project-owned configuration. A future governance upgrade needs
|
|
|
875
953
|
fresh observations, its own reviewed plan, and separate approval.
|
|
876
954
|
`;
|
|
877
955
|
}
|
|
878
|
-
function
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
956
|
+
function nativeIntegrationHeader(agent, operation) {
|
|
957
|
+
const integration = governanceAgentIntegrations[agent];
|
|
958
|
+
const skillName = operation === 'setup' ? 'liftoff-setup' : 'liftoff-governance-assess';
|
|
959
|
+
const description = operation === 'setup'
|
|
960
|
+
? 'Guide local readiness and the separately approved Liftoff repair, migration, and activation journey.'
|
|
961
|
+
: 'Explain the Liftoff governance assessment without executing repairs, activation, or other mutations.';
|
|
962
|
+
const metadata = integration.kind === 'skill'
|
|
963
|
+
? `---\nname: ${skillName}\ndescription: ${JSON.stringify(description)}\n---\n\n`
|
|
964
|
+
: '';
|
|
965
|
+
return `${metadata}# ${integration[operation].invocation}\n`;
|
|
966
|
+
}
|
|
967
|
+
function renderSetupIntegration(agent) {
|
|
968
|
+
return `${nativeIntegrationHeader(agent, 'setup')}
|
|
969
|
+
Use the Liftoff governance engine for the requested end-to-end journey.
|
|
970
|
+
Read \`.liftoff/governance/policy.md\`, \`.liftoff/governance/context.json\`,
|
|
971
|
+
and \`.liftoff/governance/README.md\`; the managed phase graph determines readiness.
|
|
882
972
|
|
|
883
|
-
1. Work from the current directory
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
\`
|
|
887
|
-
|
|
888
|
-
3.
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
\`liftoff governance apply-next --json --execute
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
973
|
+
1. Work from the current directory. Start with \`liftoff governance status --scope local --json\`.
|
|
974
|
+
Unscoped governance defaults to activation: \`liftoff governance status --json\`.
|
|
975
|
+
2. Follow schema-2 \`nextActions\` (\`command.executable\`, \`command.args\`, \`cwd\`, \`scope\`, \`approvalRequired\`).
|
|
976
|
+
Track post-operation readiness through \`nextReadyPhase\`; \`nextPlannablePhase\` is not execution readiness.
|
|
977
|
+
Follow the four scopes: \`localSetup\`, \`migration\`, \`activation\`, and \`lifecycle\`.
|
|
978
|
+
3. Inspect \`liftoff governance plan --scope local --json\` and \`liftoff governance apply-next --scope local --json\`
|
|
979
|
+
only to preview an approval-free local action (\`selectedPhase\` is attempted; \`executedPhase\` succeeded).
|
|
980
|
+
Only for a reported ready, approval-free local action, apply with
|
|
981
|
+
\`liftoff governance apply-next --scope local --json --execute\`.
|
|
982
|
+
Plan saves a disclosed external preview, not approval.
|
|
983
|
+
Apply-next without \`--execute\` is strictly read-only.
|
|
984
|
+
4. Report local completion as a milestone. Respect a local-only request or declined later authority without claiming deployment.
|
|
985
|
+
5. Continue with \`liftoff governance plan --scope activation --json\`.
|
|
986
|
+
If requested, use \`--inputs <public-json-file>\`.
|
|
987
|
+
Never automatically approve a plan; approval does not execute.
|
|
988
|
+
Only after explicit developer approval, use \`liftoff governance approve --plan <fingerprint>\`.
|
|
989
|
+
6. For \`liftoff governance credential-enroll --plan <fingerprint>\`, automation must select
|
|
990
|
+
\`--protected-stdin\` through an operator-controlled protected channel (private operator channel).
|
|
991
|
+
7. Re-inspect with \`liftoff governance verify --scope local --json\` or \`liftoff governance verify --scope activation --json\` (\`liftoff governance verify --json\`).
|
|
992
|
+
Verify exit 0 is complete; exit 2 means consistent but
|
|
993
|
+
incomplete (indeterminate readiness).
|
|
994
|
+
8. Do not repeat an unchanged failure. Use \`liftoff governance recover --plan <fingerprint> --execute\` after approval.
|
|
995
|
+
9. Full completion requires actual deployment, matching live enforcement, and readback; deferred retention is not failed activation (future lifecycle work remains pending until due).
|
|
903
996
|
`;
|
|
904
997
|
}
|
|
905
|
-
function renderAssessmentIntegration() {
|
|
906
|
-
return
|
|
907
|
-
|
|
998
|
+
function renderAssessmentIntegration(agent) {
|
|
999
|
+
return `${nativeIntegrationHeader(agent, 'assessment')}
|
|
908
1000
|
Explain a read-only governance assessment, not setup or an upgrade.
|
|
909
1001
|
The installed CLI is the target authority. In a Liftoff project, recorded context
|
|
910
1002
|
also includes \`.liftoff/governance/policy.md\`,
|
|
@@ -930,9 +1022,9 @@ Contract:
|
|
|
930
1022
|
partial coverage or differences including approved exceptions, and exit 1 as
|
|
931
1023
|
an error. A report is not activation evidence and does not complete any phase.
|
|
932
1024
|
6. Stop after explaining the report. Never execute its recommendations or shell
|
|
933
|
-
instructions, update, upgrade, activation, remediation, Git/GitHub/Azure
|
|
1025
|
+
instructions, update, upgrade, repair, migration, activation, remediation, Git/GitHub/Azure
|
|
934
1026
|
mutations, project scripts, or writes to project files, state, or evidence.
|
|
935
|
-
Keep
|
|
1027
|
+
Keep \`${governanceAgentIntegrations[agent].setup.invocation}\` as the separate primary post-init setup path.
|
|
936
1028
|
`;
|
|
937
1029
|
}
|
|
938
1030
|
function managedCompatibilityInventory(artifacts) {
|
|
@@ -953,8 +1045,6 @@ export function buildRepositoryGovernanceArtifacts(plan) {
|
|
|
953
1045
|
const policy = renderCanonicalGovernancePolicy();
|
|
954
1046
|
const context = renderGovernanceContext(plan);
|
|
955
1047
|
const guide = `${renderGovernanceGuide(plan).trimEnd()}\n`;
|
|
956
|
-
const setupIntegration = `${renderSetupIntegration().trimEnd()}\n`;
|
|
957
|
-
const assessmentIntegration = `${renderAssessmentIntegration().trimEnd()}\n`;
|
|
958
1048
|
const artifacts = [
|
|
959
1049
|
{
|
|
960
1050
|
logicalName: 'repository-governance-policy',
|
|
@@ -999,22 +1089,18 @@ export function buildRepositoryGovernanceArtifacts(plan) {
|
|
|
999
1089
|
content: renderCredentialPolicySchema()
|
|
1000
1090
|
},
|
|
1001
1091
|
...plan.agents.map((agent) => ({
|
|
1002
|
-
logicalName: agent.id
|
|
1003
|
-
? 'liftoff-setup-copilot'
|
|
1004
|
-
: 'liftoff-setup-claude',
|
|
1092
|
+
logicalName: governanceAgentIntegrations[agent.id].setup.logicalName,
|
|
1005
1093
|
category: 'governance',
|
|
1006
1094
|
lifecycle: 'managed-core',
|
|
1007
1095
|
pathParts: [...governanceArtifactPaths.setup[agent.id]],
|
|
1008
|
-
content:
|
|
1096
|
+
content: `${renderSetupIntegration(agent.id).trimEnd()}\n`
|
|
1009
1097
|
})),
|
|
1010
1098
|
...plan.agents.map((agent) => ({
|
|
1011
|
-
logicalName: agent.id
|
|
1012
|
-
? 'liftoff-governance-assess-copilot'
|
|
1013
|
-
: 'liftoff-governance-assess-claude',
|
|
1099
|
+
logicalName: governanceAgentIntegrations[agent.id].assessment.logicalName,
|
|
1014
1100
|
category: 'governance',
|
|
1015
1101
|
lifecycle: 'managed-core',
|
|
1016
1102
|
pathParts: [...governanceArtifactPaths.assessment[agent.id]],
|
|
1017
|
-
content:
|
|
1103
|
+
content: `${renderAssessmentIntegration(agent.id).trimEnd()}\n`
|
|
1018
1104
|
}))
|
|
1019
1105
|
];
|
|
1020
1106
|
const compatibility = artifacts.find((artifact) => artifact.logicalName === 'repository-governance-compatibility');
|