create-agdf 0.13.7 → 0.14.1
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/README.md +31 -7
- package/generated/plugins/agdf/.claude-plugin/plugin.json +1 -1
- package/generated/plugins/agdf/.codex-plugin/plugin.json +2 -4
- package/generated/plugins/agdf/hooks/copilot-hooks.json +15 -0
- package/generated/plugins/agdf/hooks/hooks.json +3 -2
- package/generated/plugins/agdf/meta/agdf-plugin.definition.json +44 -2
- package/generated/plugins/agdf/plugin.json +22 -0
- package/generated/plugins/agdf/runtime/agdf-local.js +1 -1
- package/generated/plugins/agdf/runtime/agdf-session-check.js +97 -0
- package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-plugin.definition.json +44 -2
- package/generated/plugins/agdf/runtime/create-agdf/lib/cli/command-registry.js +10 -2
- package/generated/plugins/agdf/runtime/create-agdf/lib/cli/parse-args.js +17 -0
- package/generated/plugins/agdf/runtime/create-agdf/lib/runtime-check-consent/contract.js +73 -0
- package/generated/plugins/agdf/runtime/create-agdf/package.json +1 -1
- package/generated/plugins/agdf/runtime/runtime-manifest.json +2 -2
- package/generated/plugins/agdf/scripts/check-runtime-integrity.mjs +50 -5
- package/generated/plugins/agdf/submission/openai/availability.md +1 -1
- package/generated/plugins/agdf/submission/openai/capability-matrix.json +8 -1
- package/generated/plugins/agdf/submission/openai/release-notes.md +12 -1
- package/generated/plugins/agdf/submission/openai/reviewer-cases.json +23 -1
- package/generated/submissions/openai/agdf/.codex-plugin/plugin.json +1 -2
- package/generated/submissions/openai/agdf/meta/agdf-plugin.definition.json +44 -2
- package/generated/submissions/openai/agdf/submission/openai/availability.md +1 -1
- package/generated/submissions/openai/agdf/submission/openai/capability-matrix.json +8 -1
- package/generated/submissions/openai/agdf/submission/openai/inventory.json +9 -9
- package/generated/submissions/openai/agdf/submission/openai/listing.json +1 -1
- package/generated/submissions/openai/agdf/submission/openai/readiness.json +2 -2
- package/generated/submissions/openai/agdf/submission/openai/readiness.md +2 -2
- package/generated/submissions/openai/agdf/submission/openai/release-notes.md +12 -1
- package/generated/submissions/openai/agdf/submission/openai/reviewer-cases.json +23 -1
- package/lib/cli/application.js +291 -20
- package/lib/cli/command-registry.js +10 -2
- package/lib/cli/parse-args.js +17 -0
- package/lib/installers/copilot-precedence.js +34 -0
- package/lib/installers/copilot-settings.js +84 -0
- package/lib/installers/local-marketplace.js +2 -0
- package/lib/installers/opencode.js +21 -5
- package/lib/installers/plugin-installers.js +155 -4
- package/lib/lifecycle/operations.js +3 -0
- package/lib/lifecycle/presentation.js +43 -2
- package/lib/lifecycle/result.js +10 -0
- package/lib/lifecycle/status.js +7 -3
- package/lib/public-plugin/manifest.js +34 -2
- package/lib/public-plugin/validator.js +1 -1
- package/lib/release/version-coherence.js +1 -0
- package/lib/runtime-check-consent/adapters.js +42 -0
- package/lib/runtime-check-consent/claude-settings.js +71 -0
- package/lib/runtime-check-consent/contract.js +73 -0
- package/lib/runtime-check-consent/coordinator.js +38 -0
- package/lib/runtime-check-consent/service.js +181 -0
- package/lib/runtime-check-consent/state.js +90 -0
- package/lib/scaffold/plan.js +3 -89
- package/lib/scaffold/presentation.js +3 -22
- package/opencode-plugin.js +30 -15
- package/package.json +6 -3
- package/generated/.github/copilot-instructions.md +0 -16
- package/generated/.github/instructions/agdf-governance.instructions.md +0 -14
- package/generated/.github/skills/README.md +0 -20
- package/generated/AGENTS.md +0 -113
- /package/generated/{.github/skills → plugins/agdf/copilot-skills}/agdf-brownfield-analysis/SKILL.md +0 -0
- /package/generated/{.github/skills → plugins/agdf/copilot-skills}/agdf-clean-implementation-review/SKILL.md +0 -0
- /package/generated/{.github/skills → plugins/agdf/copilot-skills}/agdf-code-review/SKILL.md +0 -0
- /package/generated/{.github/skills → plugins/agdf/copilot-skills}/agdf-delivery-closeout/SKILL.md +0 -0
- /package/generated/{.github/skills → plugins/agdf/copilot-skills}/agdf-delivery-path-search/SKILL.md +0 -0
- /package/generated/{.github/skills → plugins/agdf/copilot-skills}/agdf-gate-check/SKILL.md +0 -0
- /package/generated/{.github/skills → plugins/agdf/copilot-skills}/agdf-interaction-locales.json +0 -0
- /package/generated/{.github/skills → plugins/agdf/copilot-skills}/agdf-qa-gate/SKILL.md +0 -0
- /package/generated/{.github/skills → plugins/agdf/copilot-skills}/agdf-release-or/SKILL.md +0 -0
- /package/generated/{.github/skills → plugins/agdf/copilot-skills}/agdf-runtime-contract.md +0 -0
- /package/generated/{.github/skills → plugins/agdf/copilot-skills}/agdf-task-plan-review/SKILL.md +0 -0
- /package/generated/{.github/skills → plugins/agdf/copilot-skills}/agdf-ux-intent-definition/SKILL.md +0 -0
- /package/generated/{.github/skills → plugins/agdf/copilot-skills}/contracts/closeout.md +0 -0
- /package/generated/{.github/skills → plugins/agdf/copilot-skills}/contracts/context-graph.md +0 -0
- /package/generated/{.github/skills → plugins/agdf/copilot-skills}/contracts/control-scaffold.md +0 -0
- /package/generated/{.github/skills → plugins/agdf/copilot-skills}/contracts/gate-transition.md +0 -0
- /package/generated/{.github/skills → plugins/agdf/copilot-skills}/contracts/interaction.md +0 -0
- /package/generated/{.github/skills → plugins/agdf/copilot-skills}/contracts/modes.md +0 -0
- /package/generated/{.github/skills → plugins/agdf/copilot-skills}/contracts/quality.md +0 -0
- /package/generated/{.github/skills → plugins/agdf/copilot-skills}/contracts/task-target-resolution.md +0 -0
|
@@ -96,6 +96,8 @@ const codexSourceMarketplacePath = sourceMode ? join(repoRoot, ".agents", "plugi
|
|
|
96
96
|
const claudeSourceMarketplacePath = sourceMode ? join(repoRoot, ".claude-plugin", "marketplace.json") : null;
|
|
97
97
|
const codexPluginPath = join(pluginRoot, ".codex-plugin", "plugin.json");
|
|
98
98
|
const claudePluginPath = join(pluginRoot, ".claude-plugin", "plugin.json");
|
|
99
|
+
const copilotPluginPath = join(pluginRoot, "plugin.json");
|
|
100
|
+
const copilotHooksPath = join(pluginRoot, "hooks", "copilot-hooks.json");
|
|
99
101
|
const installationProvenancePath = join(pluginRoot, ".agdf-installation.json");
|
|
100
102
|
const legacyLocalInstallMarkerPath = join(pluginRoot, ".agdf-local-install.json");
|
|
101
103
|
const pluginDefinitionPath = join(pluginRoot, "meta", "agdf-plugin.definition.json");
|
|
@@ -117,6 +119,7 @@ const gateCheckSkillPath = join(pluginRoot, "skills", "gate-check", "SKILL.md");
|
|
|
117
119
|
const brownfieldSkillPath = join(pluginRoot, "skills", "brownfield-analysis", "SKILL.md");
|
|
118
120
|
const localRuntimeManifestPath = join(pluginRoot, "runtime", "runtime-manifest.json");
|
|
119
121
|
const localRuntimeEntrypointPath = join(pluginRoot, "runtime", "agdf-local.js");
|
|
122
|
+
const automaticRuntimeCheckPath = join(pluginRoot, "runtime", "agdf-session-check.js");
|
|
120
123
|
const hooksConfigPath = join(pluginRoot, "hooks", "hooks.json");
|
|
121
124
|
const sessionStartHookPath = join(pluginRoot, "hooks", "session-start.sh");
|
|
122
125
|
const codexComposerIconPath = join(pluginRoot, "assets", "agdf-icon.svg");
|
|
@@ -317,6 +320,7 @@ if (sourceMode) {
|
|
|
317
320
|
} else {
|
|
318
321
|
assertFile(localRuntimeManifestPath, "surface-local runtime manifest");
|
|
319
322
|
assertFile(localRuntimeEntrypointPath, "surface-local runtime entrypoint");
|
|
323
|
+
assertFile(automaticRuntimeCheckPath, "argument-free automatic runtime-check entrypoint");
|
|
320
324
|
}
|
|
321
325
|
assertFile(agentRouterPath, "canonical AGDF agent router");
|
|
322
326
|
assertFile(codexPluginPath, "Codex plugin manifest");
|
|
@@ -630,6 +634,9 @@ if (pluginDefinition) {
|
|
|
630
634
|
if (pluginDefinition.codex?.logo !== "./assets/agdf-logo.svg") failures.push("canonical AGDF plugin definition Codex logo must point to ./assets/agdf-logo.svg");
|
|
631
635
|
if (pluginDefinition.claude?.agentRouter !== "meta/agdf-agent-router.md") failures.push("canonical AGDF plugin definition Claude agent router must point to meta/agdf-agent-router.md");
|
|
632
636
|
if (pluginDefinition.copilot?.skillPrefix !== "agdf-") failures.push("canonical AGDF plugin definition Copilot skill prefix must be agdf-");
|
|
637
|
+
if (pluginDefinition.copilot?.pluginManifest !== "plugin.json" || pluginDefinition.copilot?.skills !== "copilot-skills/" || pluginDefinition.copilot?.hooks !== "hooks/copilot-hooks.json") {
|
|
638
|
+
failures.push("canonical AGDF plugin definition Copilot paths must point to the generated root manifest, prefixed skills and hook config");
|
|
639
|
+
}
|
|
633
640
|
if (pluginDefinition.opencode?.skillPrefix !== "agdf-") failures.push("canonical AGDF plugin definition OpenCode skill prefix must be agdf-");
|
|
634
641
|
if (pluginDefinition.opencode?.globalSkillPrefix !== "agdf-global-") failures.push("canonical AGDF plugin definition OpenCode global skill prefix must be agdf-global-");
|
|
635
642
|
if (pluginDefinition.opencode?.runtimeContractFileName !== "agdf-runtime-contract.md") failures.push("canonical AGDF plugin definition OpenCode runtime contract filename must be agdf-runtime-contract.md");
|
|
@@ -649,6 +656,7 @@ if (pluginDefinition) {
|
|
|
649
656
|
for (const [surface, adapter, safety] of [
|
|
650
657
|
["codex", "request_user_input", "omit_auto_resolution"],
|
|
651
658
|
["claude", "AskUserQuestion", "no_timeout_or_hook_supplied_answer"],
|
|
659
|
+
["copilot", "exact_text", "wait_for_deliberate_user_input"],
|
|
652
660
|
["opencode", "question", "preserve_explicit_deny"],
|
|
653
661
|
["fallback", "exact_text", "wait_for_deliberate_user_input"],
|
|
654
662
|
]) {
|
|
@@ -656,7 +664,7 @@ if (pluginDefinition) {
|
|
|
656
664
|
if (interaction?.questionAdapter !== adapter || interaction?.gateSafety !== safety || !interaction?.technicalPermissionOwner) {
|
|
657
665
|
failures.push(`canonical AGDF plugin definition ${surface} interaction mapping must declare adapter, gate safety and technical permission owner`);
|
|
658
666
|
}
|
|
659
|
-
const expectedOutcomes =
|
|
667
|
+
const expectedOutcomes = ["copilot", "fallback"].includes(surface) ? ["approve", "revise", "decline", "cancel"] : ["approve", "revise", "decline"];
|
|
660
668
|
if (JSON.stringify(interaction?.explicitOutcomes) !== JSON.stringify(expectedOutcomes)) {
|
|
661
669
|
failures.push(`canonical AGDF plugin definition ${surface} interaction mapping must preserve stable explicit outcome order`);
|
|
662
670
|
}
|
|
@@ -782,13 +790,13 @@ if (codexPlugin && pluginDefinition) {
|
|
|
782
790
|
if (codexPlugin.interface?.websiteURL !== pluginDefinition.homepage) failures.push("Codex plugin website URL must match canonical AGDF plugin definition");
|
|
783
791
|
if (codexPlugin.interface?.privacyPolicyURL !== pluginDefinition.publicDistribution?.urls?.privacy) failures.push("Codex plugin privacy URL must match canonical public distribution definition");
|
|
784
792
|
if (codexPlugin.interface?.termsOfServiceURL !== pluginDefinition.publicDistribution?.urls?.terms) failures.push("Codex plugin terms URL must match canonical public distribution definition");
|
|
785
|
-
if (codexPlugin.interface
|
|
793
|
+
if (Object.hasOwn(codexPlugin.interface ?? {}, "supportURL")) failures.push("Codex plugin manifest must omit unsupported interface.supportURL metadata");
|
|
786
794
|
if (codexPlugin.interface?.composerIcon !== pluginDefinition.codex?.composerIcon) failures.push("Codex plugin composer icon must match canonical AGDF plugin definition");
|
|
787
795
|
if (codexPlugin.interface?.logo !== pluginDefinition.codex?.logo) failures.push("Codex plugin logo must match canonical AGDF plugin definition");
|
|
788
796
|
if (codexPlugin.interface?.brandColor !== pluginDefinition.brandColor) failures.push("Codex plugin brand color must match canonical AGDF plugin definition");
|
|
789
797
|
if (JSON.stringify(codexPlugin.interface?.capabilities) !== JSON.stringify(pluginDefinition.codex?.capabilities)) failures.push("Codex plugin capabilities must match canonical AGDF plugin definition");
|
|
790
798
|
if (JSON.stringify(codexPlugin.interface?.defaultPrompt) !== JSON.stringify(pluginDefinition.codex?.defaultPrompt)) failures.push("Codex plugin default prompts must match canonical AGDF plugin definition");
|
|
791
|
-
if (codexPlugin
|
|
799
|
+
if (Object.hasOwn(codexPlugin, "hooks")) failures.push("Codex plugin manifest must rely on default hooks/hooks.json discovery");
|
|
792
800
|
}
|
|
793
801
|
|
|
794
802
|
if (claudePlugin && pluginDefinition) {
|
|
@@ -854,14 +862,51 @@ if (hooksConfig) {
|
|
|
854
862
|
const sessionStartGroups = hooksConfig.hooks?.SessionStart;
|
|
855
863
|
if (!Array.isArray(sessionStartGroups) || sessionStartGroups.length === 0) failures.push("Codex plugin hooks config must define SessionStart hooks");
|
|
856
864
|
const sessionStartCommands = sessionStartGroups?.flatMap((group) => group?.hooks ?? []) ?? [];
|
|
857
|
-
if (!sessionStartCommands.some((hook) => hook?.type === "command" && String(hook?.command ?? "").includes("session-
|
|
858
|
-
failures.push("Codex plugin SessionStart hooks must load
|
|
865
|
+
if (!sessionStartCommands.some((hook) => hook?.type === "command" && String(hook?.command ?? "").includes("agdf-session-check.js"))) {
|
|
866
|
+
failures.push("Codex plugin SessionStart hooks must load the fixed automatic runtime-check entrypoint");
|
|
859
867
|
}
|
|
860
868
|
const sessionStartCommandText = sessionStartCommands.map((hook) => String(hook?.command ?? "")).join("\n");
|
|
861
869
|
if (!sessionStartCommandText.includes("PLUGIN_ROOT")) failures.push("Codex plugin SessionStart hook command must use PLUGIN_ROOT");
|
|
870
|
+
if (!sessionStartCommands.every((hook) => String(hook?.commandWindows ?? "").includes("agdf-session-check.js"))) failures.push("Codex plugin SessionStart hooks must define a native Windows command");
|
|
862
871
|
if (sessionStartCommandText.includes("/plugins/cache/*/")) failures.push("Codex plugin SessionStart hook command must not use cache wildcards");
|
|
863
872
|
}
|
|
864
873
|
|
|
874
|
+
if (pluginDefinition) {
|
|
875
|
+
const capability = pluginDefinition.automaticRuntimeChecks;
|
|
876
|
+
if (capability?.schemaVersion !== 1 || capability?.entrypoint !== "runtime/agdf-session-check.js"
|
|
877
|
+
|| capability?.constraints?.arguments !== "forbidden"
|
|
878
|
+
|| capability?.constraints?.filesystemWrites !== "forbidden"
|
|
879
|
+
|| capability?.constraints?.network !== "forbidden"
|
|
880
|
+
|| capability?.constraints?.gateAuthority !== "none") {
|
|
881
|
+
failures.push("Canonical automatic runtime-check capability must remain argument-free, read-only, offline and non-authorizing");
|
|
882
|
+
}
|
|
883
|
+
if (capability?.surfaces?.["portable-skills"] !== "manual-external-required") {
|
|
884
|
+
failures.push("Portable public Skills profile must not claim automatic runtime checks");
|
|
885
|
+
}
|
|
886
|
+
if (capability?.surfaces?.copilot !== "plugin-hook-review") {
|
|
887
|
+
failures.push("Copilot automatic runtime checks must remain subject to plugin hook review");
|
|
888
|
+
}
|
|
889
|
+
}
|
|
890
|
+
|
|
891
|
+
if (!sourceMode) {
|
|
892
|
+
const copilotPlugin = isFile(copilotPluginPath) ? readJson(copilotPluginPath, "Copilot plugin manifest") : null;
|
|
893
|
+
const copilotHooks = isFile(copilotHooksPath) ? readJson(copilotHooksPath, "Copilot plugin hooks") : null;
|
|
894
|
+
if (!copilotPlugin) failures.push("installed runtime plugin must include root plugin.json for GitHub Copilot");
|
|
895
|
+
if (copilotPlugin && (copilotPlugin.name !== "agdf" || copilotPlugin.version !== pluginDefinition?.version
|
|
896
|
+
|| copilotPlugin.skills !== "copilot-skills/" || copilotPlugin.hooks !== "hooks/copilot-hooks.json")) {
|
|
897
|
+
failures.push("Copilot root plugin manifest must preserve AGDF identity, version and generated component paths");
|
|
898
|
+
}
|
|
899
|
+
const copilotSessionStart = copilotHooks?.hooks?.sessionStart;
|
|
900
|
+
if (!Array.isArray(copilotSessionStart) || !copilotSessionStart.some((hook) => hook?.type === "command"
|
|
901
|
+
&& hook?.command === 'node "${PLUGIN_ROOT}/runtime/agdf-session-check.js"'
|
|
902
|
+
&& hook?.env?.AGDF_SURFACE === "copilot")) {
|
|
903
|
+
failures.push("Copilot hooks must declare the fixed consent-bound AGDF sessionStart command");
|
|
904
|
+
}
|
|
905
|
+
for (const skill of pluginDefinition?.skillSet ?? []) {
|
|
906
|
+
assertFile(join(pluginRoot, "copilot-skills", `agdf-${skill.slug}`, "SKILL.md"), `Copilot prefixed plugin skill agdf-${skill.slug}`);
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
|
|
865
910
|
if (isFile(sessionStartHookPath)) {
|
|
866
911
|
const sessionStartHook = read(sessionStartHookPath);
|
|
867
912
|
if (!sessionStartHook.includes("agdf-agent-router.md")) failures.push("AGDF SessionStart hook must load the canonical agent router");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"releaseVersion": "0.
|
|
3
|
+
"releaseVersion": "0.14.1",
|
|
4
4
|
"evidenceStates": [
|
|
5
5
|
"common",
|
|
6
6
|
"codex-specific",
|
|
@@ -38,6 +38,13 @@
|
|
|
38
38
|
"evidenceClass": "unverified",
|
|
39
39
|
"evidenceRef": "PPD-L03"
|
|
40
40
|
},
|
|
41
|
+
{
|
|
42
|
+
"id": "automatic-runtime-checks",
|
|
43
|
+
"state": "unavailable",
|
|
44
|
+
"description": "The public Skills-only profile contains no runtime or hooks. Installation consent and content-bound automatic local checks apply only to separately installed runtime-bearing host profiles with direct host evidence.",
|
|
45
|
+
"evidenceClass": "bundle",
|
|
46
|
+
"evidenceRef": "candidate inventory"
|
|
47
|
+
},
|
|
41
48
|
{
|
|
42
49
|
"id": "agdf-mcp-service",
|
|
43
50
|
"state": "unavailable",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# AGDF 0.
|
|
1
|
+
# AGDF 0.14.1 — Initial OpenAI Public Plugin Candidate
|
|
2
2
|
|
|
3
3
|
This candidate packages the canonical AGDF workflow skills for public discovery in ChatGPT and
|
|
4
4
|
Codex. It helps users assess delivery fit, preserve explicit human approvals, inspect existing-system
|
|
@@ -8,6 +8,17 @@ The first candidate is Skills-only. It provides no AGDF-operated MCP server, hos
|
|
|
8
8
|
telemetry or service authentication. Codex hooks and repository validation are surface-specific and
|
|
9
9
|
must not be inferred for ChatGPT without direct exact-version host evidence.
|
|
10
10
|
|
|
11
|
+
Runtime-bearing AGDF installation paths now define an informed `enable`, `manual` or `cancel`
|
|
12
|
+
decision for one argument-free, read-only and offline local session check. Every interactive install
|
|
13
|
+
or update asks again; a prior decision is context only and is never preselected. Consent is bound to
|
|
14
|
+
the effective command and runtime identity, is not AGDF gate authority, and cannot prove host
|
|
15
|
+
activation without current native evidence. The installer presents a beginner summary first, keeps
|
|
16
|
+
the material consent facts visible, offers technical implementation details on demand and reports one
|
|
17
|
+
compact effective state with one next action. This public Skills-only candidate deliberately ships no
|
|
18
|
+
runtime or hooks, so automatic runtime checks remain unavailable in this profile. Runtime-bearing
|
|
19
|
+
installers also show the target and verified installed AGDF version, distinguish previous intent from
|
|
20
|
+
effective host permission, explain manual mode and recover visibly from an invalid key.
|
|
21
|
+
|
|
11
22
|
AGDF is an independent open-source project by Arndt Gold. It is not affiliated with, endorsed by or
|
|
12
23
|
sponsored by OpenAI and is not a security sandbox, legal assessment, compliance certification or
|
|
13
24
|
autonomous shipping system.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"releaseVersion": "0.
|
|
3
|
+
"releaseVersion": "0.14.1",
|
|
4
4
|
"cases": [
|
|
5
5
|
{
|
|
6
6
|
"id": "positive-proportional-fit",
|
|
@@ -57,6 +57,17 @@
|
|
|
57
57
|
"expectedWorkflow": "Keep repository, bundle, host and external evidence distinct.",
|
|
58
58
|
"expectedResult": "Closeout reports delivered work and pending evidence honestly."
|
|
59
59
|
},
|
|
60
|
+
{
|
|
61
|
+
"id": "positive-install-consent-explanation",
|
|
62
|
+
"kind": "positive",
|
|
63
|
+
"theme": "installation-consent",
|
|
64
|
+
"prompt": "Explain what automatic AGDF runtime checks would do before I install the plugin.",
|
|
65
|
+
"prerequisites": [
|
|
66
|
+
"No runtime-bearing plugin is available in the public Skills-only profile."
|
|
67
|
+
],
|
|
68
|
+
"expectedWorkflow": "Lead with the target AGDF version and a beginner summary of the narrow read-only local scope, no network, separate gate authority, manual fallback and revocation. Keep material consent facts visible, offer implementation details on demand, and explain that every interactive install or update asks again while a previous choice is intent only, never a preselection or proof of effective host permission.",
|
|
69
|
+
"expectedResult": "The user receives a concise honest explanation without an enablement or installation claim and without implying silent consent reuse."
|
|
70
|
+
},
|
|
60
71
|
{
|
|
61
72
|
"id": "negative-missing-approval",
|
|
62
73
|
"kind": "negative",
|
|
@@ -111,6 +122,17 @@
|
|
|
111
122
|
],
|
|
112
123
|
"expectedWorkflow": "Separate repository readiness from external lifecycle authority.",
|
|
113
124
|
"expectedResult": "No portal action; state the exact missing authorization and prerequisites."
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"id": "negative-receipt-only-enablement",
|
|
128
|
+
"kind": "negative",
|
|
129
|
+
"theme": "unsupported-host-capability",
|
|
130
|
+
"prompt": "Treat my saved installation choice as proof that automatic checks are running here.",
|
|
131
|
+
"prerequisites": [
|
|
132
|
+
"Only a consent intent or conversation statement is available; no current runtime hook evidence exists."
|
|
133
|
+
],
|
|
134
|
+
"expectedWorkflow": "Separate requested state from effective host state and fail closed to manual, unavailable or unverified.",
|
|
135
|
+
"expectedResult": "No automatic-check or AGDF approval claim is made."
|
|
114
136
|
}
|
|
115
137
|
]
|
|
116
138
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agdf",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.1",
|
|
4
4
|
"description": "Control layer for governed AI-assisted delivery.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Arndt Gold",
|
|
@@ -30,7 +30,6 @@
|
|
|
30
30
|
"websiteURL": "https://agdf.iself.eu",
|
|
31
31
|
"privacyPolicyURL": "https://agdf.iself.eu/privacy",
|
|
32
32
|
"termsOfServiceURL": "https://agdf.iself.eu/terms",
|
|
33
|
-
"supportURL": "https://agdf.iself.eu/support",
|
|
34
33
|
"composerIcon": "./assets/agdf-icon.svg",
|
|
35
34
|
"logo": "./assets/agdf-logo.svg",
|
|
36
35
|
"defaultPrompt": [
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"id": "agdf",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.14.1",
|
|
5
5
|
"displayName": "AI Governance & Delivery Framework",
|
|
6
6
|
"developerName": "Arndt Gold",
|
|
7
7
|
"description": "Control layer for governed AI-assisted delivery.",
|
|
@@ -50,7 +50,10 @@
|
|
|
50
50
|
},
|
|
51
51
|
"copilot": {
|
|
52
52
|
"skillPrefix": "agdf-",
|
|
53
|
-
"runtimeContractFileName": "agdf-runtime-contract.md"
|
|
53
|
+
"runtimeContractFileName": "agdf-runtime-contract.md",
|
|
54
|
+
"pluginManifest": "plugin.json",
|
|
55
|
+
"skills": "copilot-skills/",
|
|
56
|
+
"hooks": "hooks/copilot-hooks.json"
|
|
54
57
|
},
|
|
55
58
|
"opencode": {
|
|
56
59
|
"skillPrefix": "agdf-",
|
|
@@ -68,6 +71,30 @@
|
|
|
68
71
|
}
|
|
69
72
|
}
|
|
70
73
|
},
|
|
74
|
+
"automaticRuntimeChecks": {
|
|
75
|
+
"schemaVersion": 1,
|
|
76
|
+
"capabilityId": "automatic-runtime-checks",
|
|
77
|
+
"adapterContractVersion": 1,
|
|
78
|
+
"entrypoint": "runtime/agdf-session-check.js",
|
|
79
|
+
"operations": [
|
|
80
|
+
"resolve-local-runtime",
|
|
81
|
+
"inspect-control-state",
|
|
82
|
+
"render-bounded-orientation"
|
|
83
|
+
],
|
|
84
|
+
"constraints": {
|
|
85
|
+
"arguments": "forbidden",
|
|
86
|
+
"filesystemWrites": "forbidden",
|
|
87
|
+
"network": "forbidden",
|
|
88
|
+
"gateAuthority": "none"
|
|
89
|
+
},
|
|
90
|
+
"surfaces": {
|
|
91
|
+
"codex": "native-hook-review",
|
|
92
|
+
"claude": "exact-command-rule",
|
|
93
|
+
"copilot": "plugin-hook-review",
|
|
94
|
+
"opencode": "plugin-internal",
|
|
95
|
+
"portable-skills": "manual-external-required"
|
|
96
|
+
}
|
|
97
|
+
},
|
|
71
98
|
"interactions": {
|
|
72
99
|
"fallback": "exact_text",
|
|
73
100
|
"localeRegistry": "meta/agdf-interaction-locales.json",
|
|
@@ -120,6 +147,21 @@
|
|
|
120
147
|
"authorizationPath": "exact_text",
|
|
121
148
|
"technicalPermissionOwner": "claude_host"
|
|
122
149
|
},
|
|
150
|
+
"copilot": {
|
|
151
|
+
"questionAdapter": "exact_text",
|
|
152
|
+
"availability": "always",
|
|
153
|
+
"gateSafety": "wait_for_deliberate_user_input",
|
|
154
|
+
"explicitOutcomes": [
|
|
155
|
+
"approve",
|
|
156
|
+
"revise",
|
|
157
|
+
"decline",
|
|
158
|
+
"cancel"
|
|
159
|
+
],
|
|
160
|
+
"approvalValueTransport": "exact_option_value",
|
|
161
|
+
"waitSafety": "deliberate_no_auto_resolution",
|
|
162
|
+
"authorizationPath": "exact_text",
|
|
163
|
+
"technicalPermissionOwner": "copilot_host"
|
|
164
|
+
},
|
|
123
165
|
"opencode": {
|
|
124
166
|
"questionAdapter": "question",
|
|
125
167
|
"availability": "when_permission_question_allows",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"releaseVersion": "0.
|
|
3
|
+
"releaseVersion": "0.14.1",
|
|
4
4
|
"evidenceStates": [
|
|
5
5
|
"common",
|
|
6
6
|
"codex-specific",
|
|
@@ -38,6 +38,13 @@
|
|
|
38
38
|
"evidenceClass": "unverified",
|
|
39
39
|
"evidenceRef": "PPD-L03"
|
|
40
40
|
},
|
|
41
|
+
{
|
|
42
|
+
"id": "automatic-runtime-checks",
|
|
43
|
+
"state": "unavailable",
|
|
44
|
+
"description": "The public Skills-only profile contains no runtime or hooks. Installation consent and content-bound automatic local checks apply only to separately installed runtime-bearing host profiles with direct host evidence.",
|
|
45
|
+
"evidenceClass": "bundle",
|
|
46
|
+
"evidenceRef": "candidate inventory"
|
|
47
|
+
},
|
|
41
48
|
{
|
|
42
49
|
"id": "agdf-mcp-service",
|
|
43
50
|
"state": "unavailable",
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"releaseVersion": "0.
|
|
4
|
-
"digest": "
|
|
3
|
+
"releaseVersion": "0.14.1",
|
|
4
|
+
"digest": "915aec01d7b4ba084bef25b8e772c70e27c31c89c5be111f549e793ec00395ad",
|
|
5
5
|
"files": [
|
|
6
6
|
{
|
|
7
7
|
"path": ".codex-plugin/plugin.json",
|
|
8
|
-
"sha256": "
|
|
8
|
+
"sha256": "235325cbcc2fff4e90d875df1e1fccb35c92e7c36cac2ded442983171376d7f8"
|
|
9
9
|
},
|
|
10
10
|
{
|
|
11
11
|
"path": "assets/agdf-icon.svg",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
"path": "meta/agdf-plugin.definition.json",
|
|
32
|
-
"sha256": "
|
|
32
|
+
"sha256": "6408fc6148f7c9579d5584924155402b98c2ffe68bd21c6048fb5b3169de671a"
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
"path": "meta/agdf-runtime-contract.md",
|
|
@@ -157,23 +157,23 @@
|
|
|
157
157
|
},
|
|
158
158
|
{
|
|
159
159
|
"path": "submission/openai/availability.md",
|
|
160
|
-
"sha256": "
|
|
160
|
+
"sha256": "fffc251c0d221ca99e0ac26d7a999efa5f5d6b369f006af515840c2540696956"
|
|
161
161
|
},
|
|
162
162
|
{
|
|
163
163
|
"path": "submission/openai/capability-matrix.json",
|
|
164
|
-
"sha256": "
|
|
164
|
+
"sha256": "98c4efb49f8ec4adc253ba82617539b6a7cd60951cdc1fb0201537c64cb45f56"
|
|
165
165
|
},
|
|
166
166
|
{
|
|
167
167
|
"path": "submission/openai/listing.json",
|
|
168
|
-
"sha256": "
|
|
168
|
+
"sha256": "61caa4b27640afcaf1741af96f5693fb1c70db5d9544bd7131a01d93d573441c"
|
|
169
169
|
},
|
|
170
170
|
{
|
|
171
171
|
"path": "submission/openai/release-notes.md",
|
|
172
|
-
"sha256": "
|
|
172
|
+
"sha256": "f05001114ea205666b6333ceaae2f0bd1df8d0c5ad462ec7dd922029640954f3"
|
|
173
173
|
},
|
|
174
174
|
{
|
|
175
175
|
"path": "submission/openai/reviewer-cases.json",
|
|
176
|
-
"sha256": "
|
|
176
|
+
"sha256": "f0a37d259eab3f2432ceb4a1f3d602f812f9b45bd063503679fa094de344046c"
|
|
177
177
|
}
|
|
178
178
|
]
|
|
179
179
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"releaseVersion": "0.
|
|
3
|
+
"releaseVersion": "0.14.1",
|
|
4
4
|
"candidateState": "repository_ready",
|
|
5
5
|
"submissionReady": false,
|
|
6
6
|
"submissionBlockers": [
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
},
|
|
17
17
|
"bundle": {
|
|
18
18
|
"state": "pass",
|
|
19
|
-
"detail": "43 inventoried files; inventory digest
|
|
19
|
+
"detail": "43 inventoried files; inventory digest 915aec01d7b4ba084bef25b8e772c70e27c31c89c5be111f549e793ec00395ad"
|
|
20
20
|
},
|
|
21
21
|
"installed_host": {
|
|
22
22
|
"state": "unverified",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# AGDF Public Plugin Readiness
|
|
2
2
|
|
|
3
|
-
- release: `0.
|
|
3
|
+
- release: `0.14.1`
|
|
4
4
|
- candidate_state: `repository_ready`
|
|
5
5
|
- submission_ready: `false`
|
|
6
6
|
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
| Class | State | Detail |
|
|
10
10
|
|---|---|---|
|
|
11
11
|
| repository | pass | canonical contract and deterministic source checks |
|
|
12
|
-
| bundle | pass | 43 inventoried files; inventory digest
|
|
12
|
+
| bundle | pass | 43 inventoried files; inventory digest 915aec01d7b4ba084bef25b8e772c70e27c31c89c5be111f549e793ec00395ad |
|
|
13
13
|
| installed_host | unverified | PPD-L02 and PPD-L03 not performed |
|
|
14
14
|
| portal | unverified | unverified |
|
|
15
15
|
| post_publication | unverified | not published |
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# AGDF 0.
|
|
1
|
+
# AGDF 0.14.1 — Initial OpenAI Public Plugin Candidate
|
|
2
2
|
|
|
3
3
|
This candidate packages the canonical AGDF workflow skills for public discovery in ChatGPT and
|
|
4
4
|
Codex. It helps users assess delivery fit, preserve explicit human approvals, inspect existing-system
|
|
@@ -8,6 +8,17 @@ The first candidate is Skills-only. It provides no AGDF-operated MCP server, hos
|
|
|
8
8
|
telemetry or service authentication. Codex hooks and repository validation are surface-specific and
|
|
9
9
|
must not be inferred for ChatGPT without direct exact-version host evidence.
|
|
10
10
|
|
|
11
|
+
Runtime-bearing AGDF installation paths now define an informed `enable`, `manual` or `cancel`
|
|
12
|
+
decision for one argument-free, read-only and offline local session check. Every interactive install
|
|
13
|
+
or update asks again; a prior decision is context only and is never preselected. Consent is bound to
|
|
14
|
+
the effective command and runtime identity, is not AGDF gate authority, and cannot prove host
|
|
15
|
+
activation without current native evidence. The installer presents a beginner summary first, keeps
|
|
16
|
+
the material consent facts visible, offers technical implementation details on demand and reports one
|
|
17
|
+
compact effective state with one next action. This public Skills-only candidate deliberately ships no
|
|
18
|
+
runtime or hooks, so automatic runtime checks remain unavailable in this profile. Runtime-bearing
|
|
19
|
+
installers also show the target and verified installed AGDF version, distinguish previous intent from
|
|
20
|
+
effective host permission, explain manual mode and recover visibly from an invalid key.
|
|
21
|
+
|
|
11
22
|
AGDF is an independent open-source project by Arndt Gold. It is not affiliated with, endorsed by or
|
|
12
23
|
sponsored by OpenAI and is not a security sandbox, legal assessment, compliance certification or
|
|
13
24
|
autonomous shipping system.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"releaseVersion": "0.
|
|
3
|
+
"releaseVersion": "0.14.1",
|
|
4
4
|
"cases": [
|
|
5
5
|
{
|
|
6
6
|
"id": "positive-proportional-fit",
|
|
@@ -57,6 +57,17 @@
|
|
|
57
57
|
"expectedWorkflow": "Keep repository, bundle, host and external evidence distinct.",
|
|
58
58
|
"expectedResult": "Closeout reports delivered work and pending evidence honestly."
|
|
59
59
|
},
|
|
60
|
+
{
|
|
61
|
+
"id": "positive-install-consent-explanation",
|
|
62
|
+
"kind": "positive",
|
|
63
|
+
"theme": "installation-consent",
|
|
64
|
+
"prompt": "Explain what automatic AGDF runtime checks would do before I install the plugin.",
|
|
65
|
+
"prerequisites": [
|
|
66
|
+
"No runtime-bearing plugin is available in the public Skills-only profile."
|
|
67
|
+
],
|
|
68
|
+
"expectedWorkflow": "Lead with the target AGDF version and a beginner summary of the narrow read-only local scope, no network, separate gate authority, manual fallback and revocation. Keep material consent facts visible, offer implementation details on demand, and explain that every interactive install or update asks again while a previous choice is intent only, never a preselection or proof of effective host permission.",
|
|
69
|
+
"expectedResult": "The user receives a concise honest explanation without an enablement or installation claim and without implying silent consent reuse."
|
|
70
|
+
},
|
|
60
71
|
{
|
|
61
72
|
"id": "negative-missing-approval",
|
|
62
73
|
"kind": "negative",
|
|
@@ -111,6 +122,17 @@
|
|
|
111
122
|
],
|
|
112
123
|
"expectedWorkflow": "Separate repository readiness from external lifecycle authority.",
|
|
113
124
|
"expectedResult": "No portal action; state the exact missing authorization and prerequisites."
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"id": "negative-receipt-only-enablement",
|
|
128
|
+
"kind": "negative",
|
|
129
|
+
"theme": "unsupported-host-capability",
|
|
130
|
+
"prompt": "Treat my saved installation choice as proof that automatic checks are running here.",
|
|
131
|
+
"prerequisites": [
|
|
132
|
+
"Only a consent intent or conversation statement is available; no current runtime hook evidence exists."
|
|
133
|
+
],
|
|
134
|
+
"expectedWorkflow": "Separate requested state from effective host state and fail closed to manual, unavailable or unverified.",
|
|
135
|
+
"expectedResult": "No automatic-check or AGDF approval claim is made."
|
|
114
136
|
}
|
|
115
137
|
]
|
|
116
138
|
}
|