@skillcap/gdh 0.26.4 → 0.26.6
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/INSTALL-BUNDLE.json +1 -1
- package/RELEASE-SPAN-UPDATE-CONTRACTS.json +117 -0
- package/node_modules/@gdh/adapters/dist/skill-rendering.js +2 -2
- package/node_modules/@gdh/adapters/dist/skill-rendering.js.map +1 -1
- package/node_modules/@gdh/adapters/dist/templates/authoring-hook.js.tpl +167 -45
- package/node_modules/@gdh/adapters/package.json +8 -8
- package/node_modules/@gdh/authoring/dist/index.d.ts +1 -1
- package/node_modules/@gdh/authoring/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/authoring/dist/index.js +86 -18
- package/node_modules/@gdh/authoring/dist/index.js.map +1 -1
- package/node_modules/@gdh/authoring/dist/scene-resource.d.ts.map +1 -1
- package/node_modules/@gdh/authoring/dist/scene-resource.js +15 -9
- package/node_modules/@gdh/authoring/dist/scene-resource.js.map +1 -1
- package/node_modules/@gdh/authoring/package.json +2 -2
- package/node_modules/@gdh/cli/dist/index.d.ts +3 -1
- package/node_modules/@gdh/cli/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/cli/dist/index.js +119 -36
- package/node_modules/@gdh/cli/dist/index.js.map +1 -1
- package/node_modules/@gdh/cli/package.json +10 -10
- package/node_modules/@gdh/core/dist/index.d.ts +3 -3
- package/node_modules/@gdh/core/dist/index.js +3 -3
- package/node_modules/@gdh/core/package.json +1 -1
- package/node_modules/@gdh/docs/dist/templates/guidance/authoring-and-validation.md.tpl +5 -4
- package/node_modules/@gdh/docs/package.json +2 -2
- package/node_modules/@gdh/mcp/package.json +8 -8
- package/node_modules/@gdh/observability/dist/guidance-audit.d.ts.map +1 -1
- package/node_modules/@gdh/observability/dist/guidance-audit.js +15 -2
- package/node_modules/@gdh/observability/dist/guidance-audit.js.map +1 -1
- package/node_modules/@gdh/observability/package.json +2 -2
- package/node_modules/@gdh/runtime/package.json +2 -2
- package/node_modules/@gdh/scan/package.json +3 -3
- package/node_modules/@gdh/verify/package.json +7 -7
- package/package.json +11 -11
package/INSTALL-BUNDLE.json
CHANGED
|
@@ -3176,6 +3176,123 @@
|
|
|
3176
3176
|
}
|
|
3177
3177
|
]
|
|
3178
3178
|
}
|
|
3179
|
+
},
|
|
3180
|
+
{
|
|
3181
|
+
"version": "0.26.5",
|
|
3182
|
+
"releaseTag": "v0.26.5",
|
|
3183
|
+
"migrationStatus": "required",
|
|
3184
|
+
"summary": "v0.26.5 makes authoring validation truthful by file type and re-bakes managed target surfaces so agents receive the scoped contract. GDH_AGENT_CONTRACT_VERSION moves 14 -> 15 for generated skill/status guidance, GDH_GUIDANCE_UNIT_VERSION moves 20 -> 21 for authoring-and-validation guidance, and GDH_UPDATE_HOOK_VERSION moves 13 -> 14 for managed authoring hook behavior. Existing targets should self-update and migrate so generated hooks, generated guidance, and generated agent skills reflect: .gd uses Godot LSP diagnostics, .tscn uses scoped Godot scene validation, and .tres is ignored by automatic scoped checks.",
|
|
3185
|
+
"releaseHighlights": {
|
|
3186
|
+
"summary": "v0.26.5 is a patch release that makes GDH authoring validation honest by file type and reduces false LSP confidence during agent edits. Scoped checks now treat `.gd` files as Godot LSP inputs, `.tscn` files as Godot-backed scene-validation inputs, and `.tres` files as ignored for automatic scoped post-edit checks. The CLI also rejects misleading `authoring check --mode final --changed ...` requests because final validation is a whole-target handoff gate, not changed-file evidence.",
|
|
3187
|
+
"operatorChanges": [
|
|
3188
|
+
"**Post-edit hook feedback is scoped and actionable.** Managed hooks report changed-file diagnostics with stable line and column fallback behavior, file-type-aware recovery commands, and lock-timeout guidance. `.gd` hints point at diagnostics refresh; `.tscn` hints point at scoped post-edit scene validation; `.tres` hints explain that automatic scoped validation ignores resources.",
|
|
3189
|
+
"**CLI scope semantics are less surprising.** `--changed` now accepts repeated flags and variadic values. `--json` works as an alias where operators expect it. Final-mode authoring checks reject scoped changed-file input and suggest the correct post-edit or final command instead.",
|
|
3190
|
+
"**Authoring validation routes by file type.** `.gd` files go through the managed Godot LSP diagnostics broker. `.tscn` files run the scoped scene validator, including the Godot-backed load path after the fast reference scan passes. `.tres` files are not sent to the LSP and are ignored by automatic scoped checks.",
|
|
3191
|
+
"**Noisy diagnostic payloads are trimmed.** Default authoring-check JSON and `gdh lsp stop` output omit nested raw diagnostic payloads so agents see the result instead of drowning in protocol detail.",
|
|
3192
|
+
"**Authoring-session state writes are atomic.** `authoring-sessions.json` writes now use a temp file plus rename, preventing partial JSON artifacts during concurrent guidance-audit writes.",
|
|
3193
|
+
"**Release workflow guidance now owns push.** Maintainer release and publish guidance now treats pushing the release branch and tag as part of the workflow when tag and HEAD preconditions hold."
|
|
3194
|
+
]
|
|
3195
|
+
},
|
|
3196
|
+
"updateContract": {
|
|
3197
|
+
"summary": "Managed targets must re-bake generated hooks, generated guidance, and generated agent skills so the target-side contract matches the v0.26.5 scoped authoring-validation behavior.",
|
|
3198
|
+
"steps": [
|
|
3199
|
+
{
|
|
3200
|
+
"id": "install_v0_26_5",
|
|
3201
|
+
"kind": "mechanical",
|
|
3202
|
+
"summary": "Install the v0.26.5 GDH package.",
|
|
3203
|
+
"detail": "Run gdh self-update so the target uses the v0.26.5 package and can re-render managed authoring surfaces with agent contract 15, guidance unit 21, and update hook 14.",
|
|
3204
|
+
"commands": [
|
|
3205
|
+
"gdh self-update --apply"
|
|
3206
|
+
],
|
|
3207
|
+
"validationCommands": [
|
|
3208
|
+
"gdh status",
|
|
3209
|
+
"gdh adapters status"
|
|
3210
|
+
]
|
|
3211
|
+
},
|
|
3212
|
+
{
|
|
3213
|
+
"id": "rebake_authoring_surfaces",
|
|
3214
|
+
"kind": "mechanical",
|
|
3215
|
+
"summary": "Re-bake managed authoring hook, guidance, and skills.",
|
|
3216
|
+
"detail": "If lifecycle status reports pending managed-surface work, run gdh migrate --apply. The migration re-renders the authoring hook, authoring-and-validation guidance, and provider skill/status text so agents stop treating scenes and resources as LSP files.",
|
|
3217
|
+
"commands": [
|
|
3218
|
+
"gdh migrate --apply"
|
|
3219
|
+
],
|
|
3220
|
+
"validationCommands": [
|
|
3221
|
+
"gdh adapters status",
|
|
3222
|
+
"gdh status"
|
|
3223
|
+
]
|
|
3224
|
+
},
|
|
3225
|
+
{
|
|
3226
|
+
"id": "confirm_scoped_authoring_contract",
|
|
3227
|
+
"kind": "agent_reasoning",
|
|
3228
|
+
"summary": "Confirm the target reports the scoped authoring contract.",
|
|
3229
|
+
"detail": "Check generated guidance or status output for the v0.26.5 behavior: .gd files use Godot LSP diagnostics, .tscn files use scoped scene validation, and .tres files are ignored by automatic scoped post-edit checks. Do not claim final code-validity from changed-file evidence; use gdh authoring check --mode final --target <target> for handoff evidence.",
|
|
3230
|
+
"commands": [
|
|
3231
|
+
"gdh status"
|
|
3232
|
+
],
|
|
3233
|
+
"validationCommands": [
|
|
3234
|
+
"gdh authoring check --mode final --target <target>"
|
|
3235
|
+
]
|
|
3236
|
+
}
|
|
3237
|
+
]
|
|
3238
|
+
}
|
|
3239
|
+
},
|
|
3240
|
+
{
|
|
3241
|
+
"version": "0.26.6",
|
|
3242
|
+
"releaseTag": "v0.26.6",
|
|
3243
|
+
"migrationStatus": "required",
|
|
3244
|
+
"summary": "v0.26.6 re-bakes managed authoring hooks so GDScript post-edit checks can prove the edited content. GDH_UPDATE_HOOK_VERSION moves 14 -> 15. Existing targets should self-update and migrate so hooks run a bounded foreground diagnostics refresh for inconclusive .gd edits before dispatching.",
|
|
3245
|
+
"releaseHighlights": {
|
|
3246
|
+
"summary": "v0.26.6 fixes the managed authoring hook proof loop for GDScript edits. When a `.gd` edit is not already proven by the cached broker snapshot, the hook now runs a bounded foreground diagnostics refresh, rereads the broker, and blocks or allows from diagnostics for the edited content instead of returning repeated `file_not_in_snapshot` or `content_hash_mismatch` hints.",
|
|
3247
|
+
"operatorChanges": [
|
|
3248
|
+
"**Post-edit GDScript diagnostics are proved before dispatch.** Inconclusive `.gd` hook checks now run `npx -y @skillcap/gdh@<pin> authoring diagnostics refresh --changed ...` inside the hook budget, then reread the broker before deciding.",
|
|
3249
|
+
"**Fresh broker reads stay fast.** If the existing broker snapshot already covers the current file content, the hook still avoids npx and returns immediately.",
|
|
3250
|
+
"**Fallback guidance is honest.** The hook no longer says \"next edit will be fresh.\" If foreground refresh cannot prove the edit, the message says bounded refresh failed to produce fresh evidence and gives the exact pinned `npx -y @skillcap/gdh@<pin>` command rather than assuming a global `gdh` binary exists."
|
|
3251
|
+
]
|
|
3252
|
+
},
|
|
3253
|
+
"updateContract": {
|
|
3254
|
+
"summary": "Managed targets must re-bake generated authoring hooks so target-side post-edit GDScript validation uses the v0.26.6 foreground-refresh proof loop.",
|
|
3255
|
+
"steps": [
|
|
3256
|
+
{
|
|
3257
|
+
"id": "install_v0_26_6",
|
|
3258
|
+
"kind": "mechanical",
|
|
3259
|
+
"summary": "Install the v0.26.6 GDH package.",
|
|
3260
|
+
"detail": "Run gdh self-update so the target uses the v0.26.6 package and can re-render managed authoring hooks with update hook version 15.",
|
|
3261
|
+
"commands": [
|
|
3262
|
+
"gdh self-update --apply"
|
|
3263
|
+
],
|
|
3264
|
+
"validationCommands": [
|
|
3265
|
+
"gdh status",
|
|
3266
|
+
"gdh adapters status"
|
|
3267
|
+
]
|
|
3268
|
+
},
|
|
3269
|
+
{
|
|
3270
|
+
"id": "rebake_authoring_hook",
|
|
3271
|
+
"kind": "mechanical",
|
|
3272
|
+
"summary": "Re-bake managed authoring hook surfaces.",
|
|
3273
|
+
"detail": "If lifecycle status reports pending managed-surface work, run gdh migrate --apply. The migration re-renders the authoring hook so inconclusive .gd post-edit checks run bounded foreground diagnostics refresh before falling back to context.",
|
|
3274
|
+
"commands": [
|
|
3275
|
+
"gdh migrate --apply"
|
|
3276
|
+
],
|
|
3277
|
+
"validationCommands": [
|
|
3278
|
+
"gdh adapters status",
|
|
3279
|
+
"gdh status"
|
|
3280
|
+
]
|
|
3281
|
+
},
|
|
3282
|
+
{
|
|
3283
|
+
"id": "confirm_gd_post_edit_proof",
|
|
3284
|
+
"kind": "agent_reasoning",
|
|
3285
|
+
"summary": "Confirm GDScript post-edit checks prove current content.",
|
|
3286
|
+
"detail": "When dogfooding or validating a target, create or edit a temporary .gd file with an obvious type error and confirm the managed hook or gdh authoring diagnostics refresh reports diagnostics for the current file content. Then clear the error and confirm the same path returns clean.",
|
|
3287
|
+
"commands": [
|
|
3288
|
+
"gdh authoring diagnostics refresh --target <target> --changed <file.gd>"
|
|
3289
|
+
],
|
|
3290
|
+
"validationCommands": [
|
|
3291
|
+
"gdh authoring check --mode final --target <target>"
|
|
3292
|
+
]
|
|
3293
|
+
}
|
|
3294
|
+
]
|
|
3295
|
+
}
|
|
3179
3296
|
}
|
|
3180
3297
|
]
|
|
3181
3298
|
}
|
|
@@ -105,7 +105,7 @@ const RUN_GAME_TERMS = [
|
|
|
105
105
|
"`bridge session`: a GDH-managed interactive game run started with `bridge session start`; it can be listed, inspected, driven, screenshotted, and stopped later.",
|
|
106
106
|
];
|
|
107
107
|
const WARMUP_TERMS = [
|
|
108
|
-
"`managed LSP`: the GDH-spawned headless Godot editor that serves diagnostics for `.gd
|
|
108
|
+
"`managed LSP`: the GDH-spawned headless Godot editor that serves diagnostics for `.gd`; scene files use GDH scene validation and `.tres` is ignored by scoped automatic checks in this version.",
|
|
109
109
|
"`warmup`: a fire-and-forget LSP launch serialized by `lsp.lock` so concurrent calls do not multi-spawn Godot.",
|
|
110
110
|
"`already_warm`: the managed LSP is already healthy; warmup is unnecessary.",
|
|
111
111
|
"`warming`: another warmup is in flight; this call returns without launching a second editor.",
|
|
@@ -168,7 +168,7 @@ export const GDH_SKILL_DEFINITIONS = {
|
|
|
168
168
|
`${PREVIEW_HEADER_LITERAL} — migrate output at this step describes planned actions ("would delete ...") not applied ones ("deleted").`,
|
|
169
169
|
"Surface degraded/unavailable capabilities, including operational/diagnostic capability fields when present.",
|
|
170
170
|
"When `runtimeBridgeBroker.state` is `stale` or `incompatible`, route recovery through `runtimeBridgeBroker.cleanupCommand` / gdh bridge session prune; do not recommend gdh bridge repair unless project lifecycle or bridge status reports runtime bridge surface drift.",
|
|
171
|
-
"For code-validity evidence, the canonical command family is gdh authoring check: `.gd` changes need `gdscript_lsp`, `.tscn
|
|
171
|
+
"For code-validity evidence, the canonical command family is gdh authoring check: `.gd` changes need `gdscript_lsp`, `.tscn` changes need `godot_scene_resource`, `.tres` is ignored by scoped automatic checks in this version, and LSP lifecycle/capability readiness is not diagnostic evidence.",
|
|
172
172
|
"Do not treat capability availability as validation evidence and do not recommend validation as the generic next step after status/update. Mention validation only when the user explicitly asks for code-validity evidence, when recent hook output is already relevant, or when structured status/recovery fields require it.",
|
|
173
173
|
"Suggest one most productive next step based on the structured fields; do not claim GDH emitted a top-level `nextStep` field.",
|
|
174
174
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-rendering.js","sourceRoot":"","sources":["../src/skill-rendering.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skill-rendering.js","sourceRoot":"","sources":["../src/skill-rendering.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAElD,qBAAqB,CAAC,sBAAsB,EAAE,eAAe,CAAC,CAAC;AAC/D,qBAAqB,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;AAC9D,qBAAqB,CAAC,sBAAsB,EAAE,eAAe,CAAC,CAAC;AAC/D,qBAAqB,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;AAC9D,qBAAqB,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;AAC7D,qBAAqB,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;AAC9D,qBAAqB,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;AAC5D,qBAAqB,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC;AAC3D,qBAAqB,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;AAC5D,qBAAqB,CAAC,sBAAsB,EAAE,eAAe,CAAC,CAAC;AAC/D,qBAAqB,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;AAC9D,qBAAqB,CAAC,sBAAsB,EAAE,eAAe,CAAC,CAAC;AAC/D,qBAAqB,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;AAC9D,qBAAqB,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;AAC7D,qBAAqB,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;AAC9D,qBAAqB,CAAC,sBAAsB,EAAE,eAAe,CAAC,CAAC;AAC/D,qBAAqB,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;AAC9D,qBAAqB,CAAC,sBAAsB,EAAE,eAAe,CAAC,CAAC;AAC/D,qBAAqB,CAAC,uBAAuB,EAAE,eAAe,CAAC,CAAC;AAChE,qBAAqB,CAAC,sBAAsB,EAAE,eAAe,CAAC,CAAC;AAC/D,qBAAqB,CAAC,uBAAuB,EAAE,eAAe,CAAC,CAAC;AAChE,qBAAqB,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;AAC9D,qBAAqB,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;AAC7D,qBAAqB,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;AA+B9D,MAAM,sBAAsB,GAAG,iCAAiC,CAAC;AAEjE,SAAS,kBAAkB,CAAC,KAAoB,EAAE,SAAiB;IACjE,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,OAAO,IAAI,SAAS,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,SAAS,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAoB,EAAE,SAAiB;IACxE,OAAO,GAAG,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC;AACzD,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAoB;IACrD,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,OAAO,qKAAqK,CAAC;IAC/K,CAAC;IACD,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,OAAO,8OAA8O,CAAC;IACxP,CAAC;IACD,OAAO,0LAA0L,CAAC;AACpM,CAAC;AAED,MAAM,aAAa,GAAG;IACpB,gEAAgE;IAChE,2IAA2I;IAC3I,6GAA6G;IAC7G,oIAAoI;IACpI,+FAA+F;IAC/F,0HAA0H;IAC1H,0FAA0F;IAC1F,uFAAuF;IACvF,4GAA4G;IAC5G,iJAAiJ;CACzI,CAAC;AAEX,MAAM,YAAY,GAAG;IACnB,sHAAsH;IACtH,+GAA+G;IAC/G,4FAA4F;IAC5F,iFAAiF;IACjF,6IAA6I;IAC7I,gIAAgI;IAChI,oIAAoI;CAC5H,CAAC;AAEX,MAAM,UAAU,GAAG;IACjB,iGAAiG;IACjG,iHAAiH;IACjH,+HAA+H;IAC/H,6HAA6H;IAC7H,+FAA+F;CACvF,CAAC;AAEX,MAAM,aAAa,GAAG;IACpB,wGAAwG;IACxG,yIAAyI;IACzI,mIAAmI;IACnI,gIAAgI;IAChI,yFAAyF;CACjF,CAAC;AAEX,MAAM,YAAY,GAAG;IACnB,wFAAwF;IACxF,+FAA+F;IAC/F,oGAAoG;IACpG,0GAA0G;IAC1G,oIAAoI;IACpI,kGAAkG;CAC1F,CAAC;AAEX,MAAM,aAAa,GAAG;IACpB,sDAAsD;IACtD,6GAA6G;IAC7G,kHAAkH;IAClH,+GAA+G;IAC/G,yHAAyH;IACzH,6FAA6F;IAC7F,iFAAiF;CACzE,CAAC;AAEX,MAAM,cAAc,GAAG;IACrB,+IAA+I;IAC/I,wHAAwH;IACxH,gIAAgI;IAChI,wIAAwI;IACxI,kKAAkK;CAC1J,CAAC;AAEX,MAAM,YAAY,GAAG;IACnB,iMAAiM;IACjM,+GAA+G;IAC/G,4EAA4E;IAC5E,8FAA8F;IAC9F,6CAA6C;IAC7C,8HAA8H;CACtH,CAAC;AAEX,SAAS,GAAG,CAAC,OAAe,EAAE,OAAoB,QAAQ;IACxD,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,wBAAwB,OAAO,EAAE,CAAC;AAC/F,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAA2C;IAC3E,OAAO,EAAE;QACP,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,uDAAuD;QACpE,SAAS,EACP,yIAAyI;QAC3I,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC;QAChE,aAAa,EAAE;YACb,0FAA0F;YAC1F,4FAA4F;SAC7F;QACD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;YACpB,4DAA4D,GAAG,CAAC,OAAO,CAAC,YAAY;YACpF,wMAAwM;YACxM,oCAAoC,GAAG,CAAC,OAAO,CAAC,4BAA4B,GAAG,CAAC,OAAO,CAAC,8BAA8B;YACtH,8MAA8M;YAC9M,kNAAkN;YAClN,SAAS,GAAG,CAAC,OAAO,CAAC,wJAAwJ;YAC7K,SAAS,GAAG,CAAC,OAAO,CAAC,+NAA+N;YACpP,aAAa,GAAG,CAAC,OAAO,CAAC,4BAA4B,GAAG,CAAC,OAAO,CAAC,iFAAiF;YAClJ,qaAAqa;YACra,uEAAuE;YACvE,2EAA2E;SAC5E;QACD,KAAK,EAAE,GAAG,EAAE,CAAC;YACX,mFAAmF;YACnF,qDAAqD;YACrD,+CAA+C;YAC/C,wGAAwG;SACzG;KACF;IACD,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,6EAA6E;QAC1F,SAAS,EACP,kGAAkG;QACpG,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAC7C,aAAa,EAAE;YACb,oFAAoF;YACpF,4FAA4F;SAC7F;QACD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;YACpB,SAAS,GAAG,CAAC,OAAO,CAAC,0GAA0G;YAC/H,4LAA4L;YAC5L,qWAAqW;YACrW,iMAAiM;YACjM,mKAAmK;YACnK,SAAS,GAAG,CAAC,OAAO,CAAC,yMAAyM;YAC9N,GAAG,sBAAsB,6GAA6G;YACtI,6GAA6G;YAC7G,2QAA2Q;YAC3Q,oSAAoS;YACpS,gUAAgU;YAChU,8HAA8H;SAC/H;QACD,KAAK,EAAE,GAAG,EAAE,CAAC;YACX,4BAA4B;YAC5B,qDAAqD;YACrD,oCAAoC;YACpC,wGAAwG;SACzG;KACF;IACD,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,gEAAgE;QAC7E,gBAAgB,EAAE,qCAAqC;QACvD,SAAS,EACP,qHAAqH;QACvH,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAC7C,aAAa,EAAE;YACb,oFAAoF;YACpF,4FAA4F;SAC7F;QACD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;YACpB,SAAS,GAAG,CAAC,OAAO,CAAC,0EAA0E;YAC/F,oHAAoH;YACpH,iIAAiI;YACjI,+HAA+H;YAC/H,iIAAiI;YACjI,+JAA+J;SAChK;QACD,KAAK,EAAE,GAAG,EAAE,CAAC;YACX,+CAA+C;YAC/C,kFAAkF;YAClF,sKAAsK;YACtK,wGAAwG;SACzG;KACF;IACD,OAAO,EAAE;QACP,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,0CAA0C;QACvD,SAAS,EAAE,8EAA8E;QACzF,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC;QAChE,gBAAgB,EAAE,IAAI;QACtB,aAAa,EAAE;YACb,wCAAwC;YACxC,4FAA4F;SAC7F;QACD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;YACpB,SAAS,GAAG,CAAC,OAAO,CAAC,qHAAqH;YAC1I,oKAAoK;YACpK,uJAAuJ;YACvJ,oKAAoK;YACpK,iJAAiJ;YACjJ,gPAAgP;YAChP,4QAA4Q;YAC5Q,2IAA2I;YAC3I,kUAAkU;YAClU,6BAA6B,GAAG,CAAC,OAAO,CAAC,kGAAkG;YAC3I,2LAA2L;YAC3L,mHAAmH;YACnH,6FAA6F;YAC7F,4LAA4L;YAC5L,0TAA0T;YAC1T,yFAAyF;SAC1F;QACD,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;YAClB,wDAAwD;YACxD,gCAAgC;YAChC,2GAA2G,GAAG,CAAC,OAAO,CAAC,0CAA0C;YACjK,sGAAsG;YACtG,4BAA4B;SAC7B;KACF;IACD,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,2EAA2E;QACxF,gBAAgB,EAAE,0BAA0B;QAC5C,SAAS,EACP,mGAAmG;QACrG,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,QAAQ;QACrB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC;QAChD,gBAAgB,EAAE,IAAI;QACtB,aAAa,EAAE;YACb,8DAA8D;YAC9D,gLAAgL;YAChL,6GAA6G;YAC7G,0DAA0D;SAC3D;QACD,OAAO,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC;YAC5B,4LAA4L;YAC5L,6MAA6M;YAC7M,yMAAyM;YACzM,oLAAoL;YACpL,oOAAoO;YACpO,yBAAyB,CAAC,KAAK,CAAC;YAChC,oMAAoM,kBAAkB,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM;YACjP,iNAAiN;YACjN,qMAAqM;YACrM,iQAAiQ;YACjQ,0OAA0O;YAC1O,4tBAA4tB;YAC5tB,mQAAmQ;YACnQ,0EAA0E;YAC1E,4LAA4L;YAC5L,qRAAqR;YACrR,yFAAyF;SAC1F;QACD,KAAK,EAAE,GAAG,EAAE,CAAC;YACX,wKAAwK;YACxK,4FAA4F;YAC5F,mIAAmI;YACnI,mIAAmI;YACnI,yKAAyK;YACzK,6FAA6F;YAC7F,0GAA0G;YAC1G,oHAAoH;SACrH;KACF;IACD,OAAO,EAAE;QACP,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,sDAAsD;QACnE,SAAS,EAAE,oFAAoF;QAC/F,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC;QAChE,aAAa,EAAE;YACb,yEAAyE;YACzE,4FAA4F;SAC7F;QACD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;YACpB,SAAS,GAAG,CAAC,OAAO,CAAC,yKAAyK;YAC9L,8JAA8J;YAC9J,4HAA4H;YAC5H,gHAAgH;YAChH,6aAA6a;YAC7a,0LAA0L;YAC1L,0DAA0D,GAAG,CAAC,OAAO,CAAC,iEAAiE;YACvI,mCAAmC,GAAG,CAAC,OAAO,CAAC,4EAA4E,GAAG,CAAC,OAAO,CAAC,2CAA2C;SACnL;QACD,KAAK,EAAE,GAAG,EAAE,CAAC;YACX,4BAA4B;YAC5B,sHAAsH;YACtH,mKAAmK;YACnK,gJAAgJ;YAChJ,iEAAiE;SAClE;KACF;IACD,UAAU,EAAE;QACV,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,kDAAkD;QAC/D,gBAAgB,EAAE,sBAAsB;QACxC,SAAS,EACP,kJAAkJ;QACpJ,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC;QAChE,aAAa,EAAE;YACb,0FAA0F;YAC1F,4FAA4F;SAC7F;QACD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;YACpB,kQAAkQ;YAClQ,oSAAoS;YACpS,SAAS,GAAG,CAAC,OAAO,CAAC,6FAA6F;YAClH,6CAA6C,GAAG,CAAC,OAAO,CAAC,+LAA+L;YACxP,gQAAgQ;YAChQ,SAAS,GAAG,CAAC,OAAO,CAAC,kKAAkK;YACvL,SAAS,GAAG,CAAC,OAAO,CAAC,qKAAqK;YAC1L,8MAA8M;YAC9M,oCAAoC,GAAG,CAAC,OAAO,CAAC,sLAAsL;YACtO,gEAAgE,GAAG,CAAC,OAAO,CAAC,8EAA8E,GAAG,CAAC,OAAO,CAAC,0YAA0Y;YAChjB,2ZAA2Z;YAC3Z,gPAAgP;SACjP;QACD,KAAK,EAAE,GAAG,EAAE,CAAC;YACX,uFAAuF;YACvF,sGAAsG;YACtG,6FAA6F;YAC7F,4GAA4G;YAC5G,oGAAoG;YACpG,+HAA+H;SAChI;KACF;IACD,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,iDAAiD;QAC9D,gBAAgB,EAAE,cAAc;QAChC,SAAS,EACP,mNAAmN;QACrN,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;YACpB,0DAA0D,GAAG,CAAC,OAAO,CAAC,4EAA4E;YAClJ,qOAAqO;YACrO,mJAAmJ;SACpJ;QACD,KAAK,EAAE,GAAG,EAAE,CAAC;YACX,2HAA2H;YAC3H,sIAAsI;SACvI;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,SAAS;IACT,QAAQ;IACR,MAAM;IACN,SAAS;IACT,QAAQ;IACR,SAAS;IACT,UAAU;IACV,QAAQ;CACgC,CAAC;AAE3C,MAAM,CAAC,MAAM,8BAA8B,GAAG,yBAAyB,CAAC;AAExE,MAAM,UAAU,cAAc,CAC5B,KAAoB,EACpB,OAAmB,EACnB,aAAqB;IAErB,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG;QACZ,GAAG,iBAAiB,CAAC,KAAK,EAAE,UAAU,CAAC;QACvC,EAAE;QACF,QAAQ,8BAA8B,aAAa,KAAK,UAAU,UAAU,CAAC,IAAI,MAAM;QACvF,EAAE;QACF,UAAU;QACV,yNAAyN;QACzN,EAAE;QACF,eAAe;QACf,GAAG,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC;QACtC,EAAE;QACF,cAAc;QACd,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC;QAC9E,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,QAAQ;YAC5B,CAAC,CAAC;gBACE,0CAA0C,yBAAyB,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,8DAA8D;aAC1J;YACH,CAAC,CAAC,EAAE,CAAC;QACP,EAAE;QACF,oBAAoB;QACpB,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9C,EAAE;QACF,YAAY;QACZ,oBAAoB;QACpB,EAAE;QACF,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QACzF,EAAE;QACF,UAAU;QACV,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7D,EAAE;KACH,CAAC;IACF,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAoB,EAAE,SAAiB;IAC9E,OAAO,QAAQ,8BAA8B,aAAa,KAAK,UAAU,SAAS,MAAM,CAAC;AAC3F,CAAC;AAED,SAAS,iBAAiB,CACxB,KAAoB,EACpB,UAA8B;IAE9B,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,OAAO;YACL,KAAK;YACL,UAAU,UAAU,CAAC,IAAI,GAAG;YAC5B,iBAAiB,UAAU,CAAC,WAAW,GAAG;YAC1C,WAAW;YACX,yBAAyB,UAAU,CAAC,gBAAgB,IAAI,UAAU,CAAC,WAAW,GAAG;YACjF,KAAK;SACN,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,EAAE,SAAS,UAAU,CAAC,IAAI,EAAE,EAAE,iBAAiB,UAAU,CAAC,WAAW,GAAG,EAAE,KAAK,CAAC,CAAC;IAChG,CAAC;IAED,MAAM,WAAW,GAAG;QAClB,KAAK;QACL,SAAS,UAAU,CAAC,IAAI,EAAE;QAC1B,gBAAgB,UAAU,CAAC,WAAW,EAAE;KACzC,CAAC;IACF,IAAI,UAAU,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;QACzC,WAAW,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACnC,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxB,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,gBAAgB,CACvB,KAAoB,EACpB,UAA8B;IAE9B,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG;QACZ,4DAA4D,OAAO,KAAK;KACzE,CAAC;IACF,IAAI,UAAU,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CACR,4CAA4C,yBAAyB,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,8DAA8D,CAC5J,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,6CAA6C,UAAU,CAAC,EAAE,WAAW,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,UAAU,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,oBAAoB,EAAE,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,aAAqB;IAC5D,OAAO,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,aAAqB;IAC3D,OAAO,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,aAAqB;IAC5D,OAAO,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,aAAqB;IAC3D,OAAO,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,aAAqB;IAC1D,OAAO,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,aAAqB;IAC3D,OAAO,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,aAAqB;IACzD,OAAO,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,aAAqB;IACxD,OAAO,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,aAAqB;IACzD,OAAO,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,aAAqB;IAC5D,OAAO,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,aAAqB;IAC3D,OAAO,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,aAAqB;IAC5D,OAAO,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,aAAqB;IAC3D,OAAO,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,aAAqB;IAC1D,OAAO,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,aAAqB;IAC3D,OAAO,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,aAAqB;IAC5D,OAAO,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,aAAqB;IAC3D,OAAO,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,aAAqB;IAC5D,OAAO,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,aAAqB;IAC5D,OAAO,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,aAAqB;IAC3D,OAAO,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,aAAqB;IAC5D,OAAO,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,aAAqB;IAC3D,OAAO,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,aAAqB;IAC1D,OAAO,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,aAAqB;IAC3D,OAAO,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -20,6 +20,7 @@ const { spawnSync } = require('child_process');
|
|
|
20
20
|
|
|
21
21
|
const AUTHORING_EXTENSIONS = new Set(['.gd', '.tscn', '.tres']);
|
|
22
22
|
const CHECK_TIMEOUT_MS = readBoundedPositiveIntEnv('GDH_AUTHORING_HOOK_CHECK_TIMEOUT_MS', 2500, 10000);
|
|
23
|
+
const FOREGROUND_REFRESH_TIMEOUT_MS = readBoundedPositiveIntEnv('GDH_AUTHORING_HOOK_REFRESH_TIMEOUT_MS', 8000, 30000);
|
|
23
24
|
// Phase 82 / LSP-03: session-end ("Stop") freshness barrier. Default 60 s gives
|
|
24
25
|
// real Godot LSP startup + final-mode authoring check headroom; hard cap 300 s
|
|
25
26
|
// keeps the env var from becoming a denial-of-service surface.
|
|
@@ -52,25 +53,11 @@ function handlePostEdit(input, targetRoot) {
|
|
|
52
53
|
const changed = collectChangedFiles(input, targetRoot);
|
|
53
54
|
const authoring = changed.filter(isAuthoringValidationPath);
|
|
54
55
|
if (authoring.length === 0) return allow();
|
|
55
|
-
// Phase 82 / LSP-02: fire-and-forget scoped diagnostics refresh BEFORE the
|
|
56
|
-
// bounded read. The verb calls `refreshAuthoringDiagnostics` which boots
|
|
57
|
-
// Godot LSP if needed, opens scoped files via LSP, drains diagnostics, and
|
|
58
|
-
// writes `diagnostics-broker/snapshot.json` + `primed` marker. Hook still
|
|
59
|
-
// returns within CHECK_TIMEOUT_MS regardless of refresh outcome (Pitfall 1:
|
|
60
|
-
// detached + stdio:'ignore' + .unref() means the parent never blocks on
|
|
61
|
-
// the child).
|
|
62
|
-
spawnDetachedRefresh(targetRoot, authoring);
|
|
63
|
-
// Quick task 260504-ix2: embedded broker-snapshot reader. Replaces the
|
|
64
|
-
// per-edit synchronous `npx -y @skillcap/gdh@PINNED authoring check ...`
|
|
65
|
-
// shellout (which was eating the full `CHECK_TIMEOUT_MS` budget on the npx
|
|
66
|
-
// bootstrap path even before any GDH code ran). The reader synthesises the
|
|
67
|
-
// same `[fresh]` / `[stale]` / `[pending]` bracketed-token vocabulary the
|
|
68
|
-
// existing dispatch already consumes, so the regex ladder below is unchanged.
|
|
69
56
|
let output;
|
|
70
57
|
try {
|
|
71
|
-
output =
|
|
58
|
+
output = runPostEditDiagnostics(targetRoot, authoring);
|
|
72
59
|
} catch (_err) {
|
|
73
|
-
return context(
|
|
60
|
+
return context(`GDH post-edit hook embedded read threw; continuing without blocking. Run \`${gdhCommandPrefix()} authoring check --mode final --target ${JSON.stringify(targetRoot)}\` before claiming code-validity.`);
|
|
74
61
|
}
|
|
75
62
|
// Phase 81 / LSP-06 / D-01: dispatch on bracketed-token vocabulary.
|
|
76
63
|
// Pitfall 5: anchor regex to line-start with /m flag so per-diagnostic
|
|
@@ -86,10 +73,10 @@ function handlePostEdit(input, targetRoot) {
|
|
|
86
73
|
return allow();
|
|
87
74
|
}
|
|
88
75
|
if (/^\[pending\]/m.test(output) || /^\[stale\]/m.test(output)) {
|
|
89
|
-
return context(`GDH post-edit authoring check could not prove this edit quickly; continuing without blocking. ${compactOneLine(output || 'Run final authoring validation before claiming code-validity.')} ${reasonHint(output, targetRoot)}`);
|
|
76
|
+
return context(`GDH post-edit authoring check could not prove this edit quickly; continuing without blocking. ${compactOneLine(output || 'Run final authoring validation before claiming code-validity.')} ${reasonHint(output, targetRoot, authoring)}`);
|
|
90
77
|
}
|
|
91
78
|
if (/^\[timeout\]/m.test(output)) {
|
|
92
|
-
return context(`GDH post-edit authoring check returned a timeout status; continuing without blocking. ${compactOneLine(output || 'Run final authoring validation before claiming code-validity.')} ${reasonHint(output, targetRoot)}`);
|
|
79
|
+
return context(`GDH post-edit authoring check returned a timeout status; continuing without blocking. ${compactOneLine(output || 'Run final authoring validation before claiming code-validity.')} ${reasonHint(output, targetRoot, authoring)}`);
|
|
93
80
|
}
|
|
94
81
|
return allow();
|
|
95
82
|
}
|
|
@@ -132,23 +119,11 @@ function handlePostToolBatch(input, targetRoot) {
|
|
|
132
119
|
const authoring = unique(files).filter(isAuthoringValidationPath);
|
|
133
120
|
if (authoring.length === 0) return allow(); // Pitfall 2: no authoring files — no work
|
|
134
121
|
|
|
135
|
-
// SC2: spawnDetachedRefresh reuses the lsp.lock-serialized helper. If a
|
|
136
|
-
// per-edit refresh is already in flight when this fires, the broker side
|
|
137
|
-
// serializes via the lock primitive — no double-spawn of Godot.
|
|
138
|
-
spawnDetachedRefresh(targetRoot, authoring);
|
|
139
|
-
|
|
140
|
-
// Quick task 260504-ix2: embedded broker-snapshot reader replaces the
|
|
141
|
-
// synchronous `npx ... authoring check` shellout. The reader is invoked
|
|
142
|
-
// ONCE with the full deduplicated authoring set — the LSP-09 coalescing
|
|
143
|
-
// invariant is preserved: the loop in `runEmbeddedDiagnosticsRead` walks
|
|
144
|
-
// every file but returns on the first non-fresh status (first-failure-wins
|
|
145
|
-
// is the documented contract; a [stale] in any one file routes the batch
|
|
146
|
-
// through the drift dispatch branch).
|
|
147
122
|
let output;
|
|
148
123
|
try {
|
|
149
|
-
output =
|
|
124
|
+
output = runPostEditDiagnostics(targetRoot, authoring);
|
|
150
125
|
} catch (_err) {
|
|
151
|
-
return context(
|
|
126
|
+
return context(`GDH PostToolBatch hook embedded read threw; continuing without blocking. Run \`${gdhCommandPrefix()} authoring check --mode final --target ${JSON.stringify(targetRoot)}\` before claiming code-validity.`);
|
|
152
127
|
}
|
|
153
128
|
|
|
154
129
|
// Bracketed-token dispatch — IDENTICAL to handlePostEdit. Pitfall 5 from Phase 81
|
|
@@ -162,10 +137,10 @@ function handlePostToolBatch(input, targetRoot) {
|
|
|
162
137
|
return allow();
|
|
163
138
|
}
|
|
164
139
|
if (/^\[pending\]/m.test(output) || /^\[stale\]/m.test(output)) {
|
|
165
|
-
return context(`GDH PostToolBatch authoring check could not prove this batch quickly; continuing without blocking. ${compactOneLine(output || 'Run final authoring validation before claiming code-validity.')} ${reasonHint(output, targetRoot)}`);
|
|
140
|
+
return context(`GDH PostToolBatch authoring check could not prove this batch quickly; continuing without blocking. ${compactOneLine(output || 'Run final authoring validation before claiming code-validity.')} ${reasonHint(output, targetRoot, authoring)}`);
|
|
166
141
|
}
|
|
167
142
|
if (/^\[timeout\]/m.test(output)) {
|
|
168
|
-
return context(`GDH PostToolBatch authoring check returned a timeout status; continuing without blocking. ${compactOneLine(output || 'Run final authoring validation before claiming code-validity.')} ${reasonHint(output, targetRoot)}`);
|
|
143
|
+
return context(`GDH PostToolBatch authoring check returned a timeout status; continuing without blocking. ${compactOneLine(output || 'Run final authoring validation before claiming code-validity.')} ${reasonHint(output, targetRoot, authoring)}`);
|
|
169
144
|
}
|
|
170
145
|
return allow();
|
|
171
146
|
}
|
|
@@ -181,6 +156,65 @@ function handlePostToolBatch(input, targetRoot) {
|
|
|
181
156
|
// refresh --changed`. Detached spawn still uses `child_process.spawn` directly
|
|
182
157
|
// (always did).
|
|
183
158
|
|
|
159
|
+
// v0.26.6: trust-first post-edit loop.
|
|
160
|
+
//
|
|
161
|
+
// The old v0.26.4/v0.26.5 hook spawned a detached refresh and immediately read
|
|
162
|
+
// the previous broker snapshot. That is a broken proof loop for real edits:
|
|
163
|
+
// each edit changes the content hash, so the synchronous read is guaranteed to
|
|
164
|
+
// see either `file_not_in_snapshot` or `content_hash_mismatch` until a refresh
|
|
165
|
+
// for the new content has completed. The advertised "next edit will be fresh"
|
|
166
|
+
// was therefore false for any edit that changed the file again.
|
|
167
|
+
//
|
|
168
|
+
// New contract:
|
|
169
|
+
// 1. Read current broker snapshot.
|
|
170
|
+
// 2. If conclusive ([fresh]/[failed]/[partial]), dispatch immediately.
|
|
171
|
+
// 3. For .gd files only, run a bounded foreground diagnostics refresh, then
|
|
172
|
+
// read broker again. This is the only way a post-edit hook can prove the
|
|
173
|
+
// edited GDScript content it was asked to validate.
|
|
174
|
+
// 4. If foreground refresh cannot prove within budget, spawn detached refresh
|
|
175
|
+
// as a fallback and emit non-blocking context.
|
|
176
|
+
function runPostEditDiagnostics(targetRoot, authoringFiles) {
|
|
177
|
+
let output = runEmbeddedDiagnosticsRead(targetRoot, authoringFiles);
|
|
178
|
+
if (isConclusiveDiagnosticsOutput(output)) return output;
|
|
179
|
+
|
|
180
|
+
if (hasGdFiles(authoringFiles)) {
|
|
181
|
+
const refreshed = runForegroundDiagnosticsRefresh(targetRoot, authoringFiles);
|
|
182
|
+
if (refreshed) {
|
|
183
|
+
output = runEmbeddedDiagnosticsRead(targetRoot, authoringFiles);
|
|
184
|
+
if (isConclusiveDiagnosticsOutput(output)) return output;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
spawnDetachedRefresh(targetRoot, authoringFiles);
|
|
189
|
+
return output;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
function isConclusiveDiagnosticsOutput(output) {
|
|
193
|
+
return /^\[fresh\]/m.test(output) || /^\[failed\]/m.test(output) || /^\[partial\]/m.test(output);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
function hasGdFiles(files) {
|
|
197
|
+
return Array.isArray(files) && files.some(f => path.extname(f).toLowerCase() === '.gd');
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
function runForegroundDiagnosticsRefresh(targetRoot, files) {
|
|
201
|
+
const gdFiles = Array.isArray(files) ? unique(files).filter(f => path.extname(f).toLowerCase() === '.gd') : [];
|
|
202
|
+
if (gdFiles.length === 0) return false;
|
|
203
|
+
try {
|
|
204
|
+
const args = ['-y', `@skillcap/gdh@${PINNED_VERSION}`, 'authoring', 'diagnostics', 'refresh', '--target', targetRoot];
|
|
205
|
+
for (const f of gdFiles) args.push('--changed', f);
|
|
206
|
+
const result = spawnSync('npx', args, {
|
|
207
|
+
cwd: targetRoot,
|
|
208
|
+
encoding: 'utf8',
|
|
209
|
+
timeout: FOREGROUND_REFRESH_TIMEOUT_MS,
|
|
210
|
+
windowsHide: true,
|
|
211
|
+
});
|
|
212
|
+
return !!result && !result.error && result.status === 0 && !result.signal;
|
|
213
|
+
} catch (_error) {
|
|
214
|
+
return false;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
184
218
|
// Quick task 260504-o6w. Fire-and-forget scoped diagnostics refresh from the
|
|
185
219
|
// post-edit hook. The CLI verb calls `refreshAuthoringDiagnostics` which boots
|
|
186
220
|
// Godot LSP if needed, opens scoped files via LSP, drains diagnostics, and
|
|
@@ -279,7 +313,7 @@ function handleStop(input, targetRoot) {
|
|
|
279
313
|
return allow();
|
|
280
314
|
}
|
|
281
315
|
if (/^\[failed\]/m.test(output) || /^\[partial\]/m.test(output) || /^\[stale\]/m.test(output)) {
|
|
282
|
-
return stopContext(`GDH session-end check found unresolved diagnostics: ${compactOneLine(output)} ${reasonHint(output, targetRoot)}`);
|
|
316
|
+
return stopContext(`GDH session-end check found unresolved diagnostics: ${compactOneLine(output)} ${reasonHint(output, targetRoot, authoringFiles)}`);
|
|
283
317
|
}
|
|
284
318
|
if (/^\[pending\]/m.test(output) || /^\[timeout\]/m.test(output)) {
|
|
285
319
|
// Cold/missing broker: spawn detached refresh so the NEXT session benefits.
|
|
@@ -291,7 +325,7 @@ function handleStop(input, targetRoot) {
|
|
|
291
325
|
return stopContext(
|
|
292
326
|
'GDH session-end check could not prove final code-validity from the cached broker snapshot; continuing without blocking. ' +
|
|
293
327
|
'Run `gdh authoring check --mode final` manually before claiming code-validity. ' +
|
|
294
|
-
compactOneLine(output) + ' ' + reasonHint(output, targetRoot),
|
|
328
|
+
compactOneLine(output) + ' ' + reasonHint(output, targetRoot, authoringFiles),
|
|
295
329
|
);
|
|
296
330
|
}
|
|
297
331
|
// Unknown status: degrade to additionalContext (NEVER block).
|
|
@@ -299,7 +333,7 @@ function handleStop(input, targetRoot) {
|
|
|
299
333
|
return stopContext(
|
|
300
334
|
'GDH session-end check could not produce a final result; continuing without blocking. ' +
|
|
301
335
|
'Run `gdh authoring check --mode final` manually before claiming code-validity. ' +
|
|
302
|
-
compactOneLine(output) + ' ' + reasonHint(output, targetRoot),
|
|
336
|
+
compactOneLine(output) + ' ' + reasonHint(output, targetRoot, authoringFiles),
|
|
303
337
|
);
|
|
304
338
|
}
|
|
305
339
|
|
|
@@ -468,8 +502,9 @@ function formatFreshDiagnostics(items) {
|
|
|
468
502
|
if (sev === 'error') errors += 1;
|
|
469
503
|
else if (sev === 'warning') warnings += 1;
|
|
470
504
|
else infoCount += 1;
|
|
471
|
-
const
|
|
472
|
-
const
|
|
505
|
+
const pos = diagnosticPosition(diag);
|
|
506
|
+
const line = pos.line;
|
|
507
|
+
const col = pos.column;
|
|
473
508
|
const msg = (diag && typeof diag.message === 'string') ? diag.message : '';
|
|
474
509
|
lines.push(`${item.uri}:${line}:${col} [${sev}] ${msg}`);
|
|
475
510
|
}
|
|
@@ -484,6 +519,35 @@ function formatFreshDiagnostics(items) {
|
|
|
484
519
|
return `${head}[${statusToken}] ${errors} errors, ${warnings} warnings, ${infoCount} info. Completion ${completion}.`;
|
|
485
520
|
}
|
|
486
521
|
|
|
522
|
+
function diagnosticPosition(diag) {
|
|
523
|
+
const directLine = numberOrNull(diag && diag.line);
|
|
524
|
+
const directColumn = numberOrNull(diag && diag.column);
|
|
525
|
+
if (directLine !== null || directColumn !== null) {
|
|
526
|
+
return { line: directLine || 0, column: directColumn || 0 };
|
|
527
|
+
}
|
|
528
|
+
const rawRange = diag && diag.raw && diag.raw.range;
|
|
529
|
+
const rawStart = rawRange && rawRange.start;
|
|
530
|
+
const rawLine = rawStart ? numberOrNull(rawStart.line) : null;
|
|
531
|
+
const rawColumn = rawStart ? numberOrNull(rawStart.character) : null;
|
|
532
|
+
if (rawLine !== null || rawColumn !== null) {
|
|
533
|
+
return {
|
|
534
|
+
line: rawLine === null ? 0 : rawLine + 1,
|
|
535
|
+
column: rawColumn === null ? 0 : rawColumn + 1,
|
|
536
|
+
};
|
|
537
|
+
}
|
|
538
|
+
const legacyStart = diag && diag.range && diag.range.start;
|
|
539
|
+
const legacyLine = legacyStart ? numberOrNull(legacyStart.line) : null;
|
|
540
|
+
const legacyColumn = legacyStart ? numberOrNull(legacyStart.character) : null;
|
|
541
|
+
return {
|
|
542
|
+
line: legacyLine === null ? 0 : legacyLine + 1,
|
|
543
|
+
column: legacyColumn === null ? 0 : legacyColumn + 1,
|
|
544
|
+
};
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
function numberOrNull(value) {
|
|
548
|
+
return Number.isFinite(value) ? value : null;
|
|
549
|
+
}
|
|
550
|
+
|
|
487
551
|
function resolveStateRoot(targetRoot) {
|
|
488
552
|
// 1. Baked render-time path — the canonical resolution for installed hooks.
|
|
489
553
|
try {
|
|
@@ -647,26 +711,84 @@ function allow() { process.exit(0); }
|
|
|
647
711
|
// the embedded reader's output. The mapping covers all reason classes emitted by
|
|
648
712
|
// `formatStatus` so the agent receives a copy-paste-ready command rather than a
|
|
649
713
|
// generic "authoring check failed" message.
|
|
650
|
-
function reasonHint(output, targetRoot) {
|
|
714
|
+
function reasonHint(output, targetRoot, files) {
|
|
651
715
|
const text = String(output || '');
|
|
652
716
|
const match = text.match(/^Reasons:\s*(.+)$/m);
|
|
653
717
|
const reasons = match ? match[1].split(',').map(r => r.trim()).filter(Boolean) : [];
|
|
654
718
|
// JSON.stringify embeds the path so spaces and quotes survive shell re-use.
|
|
655
719
|
const targetArg = JSON.stringify(targetRoot);
|
|
720
|
+
const scopedHint = fileTypeScopedHint(targetArg, files);
|
|
656
721
|
// First-match-wins ordering: more specific reasons before generic.
|
|
657
722
|
if (reasons.includes('lsp_instance_identity_mismatch')) {
|
|
658
|
-
return `Cross-worktree LSP from another checkout. Run
|
|
723
|
+
return `Cross-worktree LSP from another checkout. Run \`${gdhCommandPrefix()} lsp prune --target ${targetArg}\` then retry the edit.`;
|
|
724
|
+
}
|
|
725
|
+
if (reasons.includes('lsp_state_lock_timeout')) {
|
|
726
|
+
return `Authoring state lock busy; ${describeLspLock(targetRoot)} Retry the scoped command after the current authoring operation finishes. ${scopedHint}`;
|
|
659
727
|
}
|
|
660
728
|
if (reasons.includes('lsp_instance_not_running')) {
|
|
661
|
-
return `LSP
|
|
729
|
+
return `LSP not ready inside hook budget; foreground refresh attempted for .gd files and background refresh is running if needed. ${scopedHint}`;
|
|
662
730
|
}
|
|
663
731
|
if (reasons.includes('broker_not_yet_primed') || reasons.includes('file_not_in_snapshot')) {
|
|
664
|
-
return `Broker
|
|
732
|
+
return `Broker did not contain this edit after bounded refresh; background refresh is running if needed. ${scopedHint}`;
|
|
665
733
|
}
|
|
666
734
|
if (reasons.includes('content_hash_mismatch') || reasons.includes('freshness_expired')) {
|
|
667
|
-
return `Broker snapshot stale; background refresh running
|
|
735
|
+
return `Broker snapshot stale after bounded refresh; background refresh is running if needed. ${scopedHint}`;
|
|
736
|
+
}
|
|
737
|
+
return `Run scoped authoring validation before claiming code-validity. ${scopedHint}`;
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
function fileTypeScopedHint(targetArg, files) {
|
|
741
|
+
const inputFiles = Array.isArray(files) ? unique(files) : [];
|
|
742
|
+
const gdFiles = inputFiles.filter(f => path.extname(f).toLowerCase() === '.gd');
|
|
743
|
+
const sceneFiles = inputFiles.filter(f => path.extname(f).toLowerCase() === '.tscn');
|
|
744
|
+
const resourceFiles = inputFiles.filter(f => path.extname(f).toLowerCase() === '.tres');
|
|
745
|
+
const parts = [];
|
|
746
|
+
if (gdFiles.length > 0) {
|
|
747
|
+
parts.push(`For .gd: \`${gdhCommandPrefix()} authoring diagnostics refresh --target ${targetArg}${changedArgs(gdFiles)}\``);
|
|
748
|
+
}
|
|
749
|
+
if (sceneFiles.length > 0) {
|
|
750
|
+
parts.push(`For .tscn: \`${gdhCommandPrefix()} authoring check --mode post-edit --target ${targetArg}${changedArgs(sceneFiles)}\``);
|
|
751
|
+
}
|
|
752
|
+
if (resourceFiles.length > 0) {
|
|
753
|
+
parts.push('.tres automatic scoped validation is ignored in this GDH version; do not wait on LSP/resource diagnostics for those files.');
|
|
754
|
+
}
|
|
755
|
+
if (parts.length === 0) {
|
|
756
|
+
return `Run \`${gdhCommandPrefix()} authoring check --mode final --target ${targetArg}\` before claiming code-validity.`;
|
|
757
|
+
}
|
|
758
|
+
return parts.join(' ');
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
function gdhCommandPrefix() {
|
|
762
|
+
return `npx -y @skillcap/gdh@${PINNED_VERSION}`;
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
function changedArgs(files) {
|
|
766
|
+
return files.map(f => ` --changed ${JSON.stringify(f)}`).join('');
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
function describeLspLock(targetRoot) {
|
|
770
|
+
const stateRoot = resolveStateRoot(targetRoot) || path.join(targetRoot, '.gdh-state');
|
|
771
|
+
const candidates = [
|
|
772
|
+
{ label: 'authoring/lsp.lock', file: path.join(stateRoot, 'authoring', 'lsp.lock', 'metadata.json') },
|
|
773
|
+
{ label: 'lsp.lock', file: path.join(stateRoot, 'lsp.lock', 'metadata.json') },
|
|
774
|
+
];
|
|
775
|
+
for (const candidate of candidates) {
|
|
776
|
+
try {
|
|
777
|
+
const metadata = JSON.parse(fs.readFileSync(candidate.file, 'utf8'));
|
|
778
|
+
const owner = typeof metadata.owner === 'string' && metadata.owner ? metadata.owner : 'unknown-owner';
|
|
779
|
+
const pid = Number.isFinite(metadata.pid) ? ` pid=${metadata.pid}` : '';
|
|
780
|
+
const acquiredMs = Date.parse(metadata.acquiredAt);
|
|
781
|
+
const ageMs = Number.isFinite(acquiredMs) ? Math.max(0, Date.now() - acquiredMs) : null;
|
|
782
|
+
const age = ageMs === null ? 'age=unknown' : `age=${Math.round(ageMs / 1000)}s`;
|
|
783
|
+
const staleAfter = Number.isFinite(metadata.staleAfterMs)
|
|
784
|
+
? `staleAfter=${Math.round(metadata.staleAfterMs / 1000)}s`
|
|
785
|
+
: 'staleAfter=unknown';
|
|
786
|
+
return `${candidate.label} held by ${owner}${pid} (${age}, ${staleAfter}).`;
|
|
787
|
+
} catch (_err) {
|
|
788
|
+
// Try next known lock path.
|
|
789
|
+
}
|
|
668
790
|
}
|
|
669
|
-
return
|
|
791
|
+
return 'lock metadata unavailable (expected .gdh-state/authoring/lsp.lock or .gdh-state/lsp.lock).';
|
|
670
792
|
}
|
|
671
793
|
// Codex always receives hookSpecificOutput.additionalContext (any event — Codex's
|
|
672
794
|
// hook contract accepts it on PreToolUse / PostToolUse / Stop / etc.).
|
|
@@ -11,13 +11,13 @@
|
|
|
11
11
|
}
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@gdh/authoring": "0.26.
|
|
15
|
-
"@gdh/core": "0.26.
|
|
16
|
-
"@gdh/docs": "0.26.
|
|
17
|
-
"@gdh/observability": "0.26.
|
|
18
|
-
"@gdh/runtime": "0.26.
|
|
19
|
-
"@gdh/scan": "0.26.
|
|
20
|
-
"@gdh/verify": "0.26.
|
|
14
|
+
"@gdh/authoring": "0.26.6",
|
|
15
|
+
"@gdh/core": "0.26.6",
|
|
16
|
+
"@gdh/docs": "0.26.6",
|
|
17
|
+
"@gdh/observability": "0.26.6",
|
|
18
|
+
"@gdh/runtime": "0.26.6",
|
|
19
|
+
"@gdh/scan": "0.26.6",
|
|
20
|
+
"@gdh/verify": "0.26.6"
|
|
21
21
|
},
|
|
22
|
-
"version": "0.26.
|
|
22
|
+
"version": "0.26.6"
|
|
23
23
|
}
|
|
@@ -8,8 +8,8 @@ export declare function runAuthoringCheck(input: {
|
|
|
8
8
|
readonly changedFiles?: readonly string[];
|
|
9
9
|
readonly severityPolicy?: GdhAuthoringSeverityPolicy;
|
|
10
10
|
}): Promise<GdhAuthoringCheckResult>;
|
|
11
|
-
export { getCurrentAuthoringDiagnostics, getAuthoringDiagnosticsStatus, refreshAuthoringDiagnostics, doctorAuthoringDiagnostics, pruneAuthoringDiagnostics, type GetAuthoringDiagnosticsStatusInput, type GetCurrentAuthoringDiagnosticsInput, type RefreshAuthoringDiagnosticsInput, type RefreshAuthoringDiagnosticsResult, type DoctorAuthoringDiagnosticsInput, type DoctorAuthoringDiagnosticsResult, type PruneAuthoringDiagnosticsInput, type PruneAuthoringDiagnosticsResult, } from "./diagnostics-broker.js";
|
|
12
11
|
export { inspectCacheState, pruneCacheState, resolveCacheNamespace } from "./cache.js";
|
|
12
|
+
export { type DoctorAuthoringDiagnosticsInput, type DoctorAuthoringDiagnosticsResult, doctorAuthoringDiagnostics, type GetAuthoringDiagnosticsStatusInput, type GetCurrentAuthoringDiagnosticsInput, getAuthoringDiagnosticsStatus, getCurrentAuthoringDiagnostics, type PruneAuthoringDiagnosticsInput, type PruneAuthoringDiagnosticsResult, pruneAuthoringDiagnostics, type RefreshAuthoringDiagnosticsInput, type RefreshAuthoringDiagnosticsResult, refreshAuthoringDiagnostics, } from "./diagnostics-broker.js";
|
|
13
13
|
export { checkManagedLsp, doctorManagedLsp, getManagedLspStatus, pruneManagedLsp, resetManagedLspTestState, restartManagedLsp, runManagedAuthoringCheck, stopManagedLsp, warmupManagedLsp, } from "./lsp.js";
|
|
14
14
|
export { runImportRefresh, runTargetPrepare } from "./prepare.js";
|
|
15
15
|
export { hasCompleteOnboardingSurface, parseProjectConfigYaml, readProjectConfig, readWorktreeState, resolveAuthoringStatus, resolveConfiguredCapabilities, resolveEffectiveTargetPath, resolvePinnedVersion, resolvePinnedVersionOrNull, resolveProjectRoot, resolveTargetGodotDocsVersion, } from "./project.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACtB,MAAM,WAAW,CAAC;AAMnB,eAAO,MAAM,gBAAgB,wCAM3B,CAAC;AAEH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,0BAA0B,CAAC;CACtD,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAsDnC;AAoKD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EACL,KAAK,+BAA+B,EACpC,KAAK,gCAAgC,EACrC,0BAA0B,EAC1B,KAAK,kCAAkC,EACvC,KAAK,mCAAmC,EACxC,6BAA6B,EAC7B,8BAA8B,EAC9B,KAAK,8BAA8B,EACnC,KAAK,+BAA+B,EACpC,yBAAyB,EACzB,KAAK,gCAAgC,EACrC,KAAK,iCAAiC,EACtC,2BAA2B,GAC5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,wBAAwB,EACxB,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,EACd,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,6BAA6B,EAC7B,0BAA0B,EAC1B,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
|