@dsh-cc/plugin-loader 0.7.1 → 0.8.0-rc.2

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.
Files changed (52) hide show
  1. package/README.i18n.yaml +1 -1
  2. package/README.md +30 -0
  3. package/lib/actor-contract-gate.d.ts +66 -0
  4. package/lib/actor-contract-gate.d.ts.map +1 -0
  5. package/lib/actor-contract-gate.js +83 -0
  6. package/lib/actor-contract-gate.js.map +1 -0
  7. package/lib/agents.d.ts +5 -1
  8. package/lib/agents.d.ts.map +1 -1
  9. package/lib/agents.js +65 -21
  10. package/lib/agents.js.map +1 -1
  11. package/lib/commands.d.ts +1 -0
  12. package/lib/commands.d.ts.map +1 -1
  13. package/lib/commands.js +84 -10
  14. package/lib/commands.js.map +1 -1
  15. package/lib/discovery.d.ts +20 -0
  16. package/lib/discovery.d.ts.map +1 -1
  17. package/lib/discovery.js +37 -1
  18. package/lib/discovery.js.map +1 -1
  19. package/lib/hooks.d.ts +8 -0
  20. package/lib/hooks.d.ts.map +1 -1
  21. package/lib/hooks.js +74 -5
  22. package/lib/hooks.js.map +1 -1
  23. package/lib/index.d.ts +17 -3
  24. package/lib/index.d.ts.map +1 -1
  25. package/lib/index.js +30 -8
  26. package/lib/index.js.map +1 -1
  27. package/lib/manifest.d.ts +11 -1
  28. package/lib/manifest.d.ts.map +1 -1
  29. package/lib/manifest.js +54 -1
  30. package/lib/manifest.js.map +1 -1
  31. package/lib/mcp.d.ts +1 -0
  32. package/lib/mcp.d.ts.map +1 -1
  33. package/lib/mcp.js +81 -5
  34. package/lib/mcp.js.map +1 -1
  35. package/lib/resolve-manifest.d.ts +15 -1
  36. package/lib/resolve-manifest.d.ts.map +1 -1
  37. package/lib/resolve-manifest.js +37 -12
  38. package/lib/resolve-manifest.js.map +1 -1
  39. package/lib/rules.d.ts +37 -0
  40. package/lib/rules.d.ts.map +1 -0
  41. package/lib/rules.js +171 -0
  42. package/lib/rules.js.map +1 -0
  43. package/lib/seams.d.ts +11 -1
  44. package/lib/seams.d.ts.map +1 -1
  45. package/lib/seams.js.map +1 -1
  46. package/lib/skills.d.ts +1 -0
  47. package/lib/skills.d.ts.map +1 -1
  48. package/lib/skills.js +45 -8
  49. package/lib/skills.js.map +1 -1
  50. package/lib/types.d.ts +31 -1
  51. package/lib/types.d.ts.map +1 -1
  52. package/package.json +17 -14
package/README.i18n.yaml CHANGED
@@ -2,5 +2,5 @@
2
2
  # side as of the last confirmed-consistent state. Both languages carry equal authority;
3
3
  # after editing either side, bring the other along and re-record with:
4
4
  # pnpm check:readme --write
5
- README.md: f44313c281546e6a4cd14ba1d0d4f3e3ab839092
5
+ README.md: 0607a9e1fa6e1f3d0420e69dc9ed1bc5ffdd23a9
6
6
  README.zh.md: 6457beeefb0b40d948dee781ddbc616379ff3195
package/README.md CHANGED
@@ -58,6 +58,36 @@ Each component is peer-style: the loader probes the host seam via `ctx.get(...)`
58
58
 
59
59
  The `hooks` and `mcp` seams have no harness-owned service in this package itself; a deployment that wants those components provides a guest seam or they are reported skipped. The dsh host wiring now supplies the `mcp` seam: the cc-shell glue provides a built-in `mcp` seam (`cc-shell/src/mcpSeam.ts`, the `cc-mcp-seam` child plugin), so plugin `mcpServers` mount for real in shipped deployments (see docs/plans/2026-09-07-plugin-mcp-seam.md). `hooks` remains host-depended.
60
60
 
61
+ ## Cursor dialect
62
+
63
+ Cursor plugins load through the same pipeline as CC plugins — one tolerant parser with flavor-keyed branches, not a second loader. The dialect delta is manifest candidates plus small per-component normalizations; every degraded or ignored field surfaces as a warning on the load report.
64
+
65
+ **Manifest candidates.** A plugin root is probed in order: `.claude-plugin/plugin.json` → `.cursor-plugin/plugin.json` → top-level `plugin.json`. First hit wins. When both dialect manifests exist the CC one is used and the report carries the warning `cursor manifest ignored: cc manifest takes precedence`. The flavor (`cc` or `cursor`) is recorded on the resolved manifest and on the load report.
66
+
67
+ **Cursor-only behaviors:**
68
+
69
+ - **Rules** — `rules/*.mdc` files (declared or the default `rules/` dir) are parsed and mounted via the `rules` guest seam: the cc-shell bridge renders one consolidated `cc:plugin-rules` system-prompt section per plugin (static for `alwaysApply`, conditional-instruction for glob-scoped; a 4000-character per-plugin budget with explicit truncation). Where the seam is absent they are tallied as skipped with a warning.
70
+ - **Hooks** — camelCase Cursor events map through the verified dialect table in `hooks.ts`; cursor wire entries (`{command, matcher?, loop_limit?}`) become CC matcher groups and `${CURSOR_PLUGIN_ROOT}` expands to the plugin root:
71
+
72
+ | Cursor event | CC event |
73
+ |---|---|
74
+ | `sessionStart` | `SessionStart` |
75
+ | `sessionEnd` | `SessionEnd` |
76
+ | `preToolUse` | `PreToolUse` |
77
+ | `postToolUse` | `PostToolUse` |
78
+ | `postToolUseFailure` | `PostToolUseFailure` |
79
+ | `subagentStart` | `SubagentStart` |
80
+ | `subagentStop` | `SubagentStop` |
81
+ | `beforeSubmitPrompt` | `UserPromptSubmit` |
82
+ | `preCompact` | `PreCompact` |
83
+ | `stop` | `Stop` |
84
+
85
+ Unmapped events (`beforeShellExecution`, `afterShellExecution`, `beforeMCPExecution`, `beforeReadFile`, `afterFileEdit`, `afterAgentResponse`, `afterAgentThought`, Tab and app hooks) skip with a warning; `loop_limit` warns.
86
+ - **Commands** — `.txt` files mount as plain text on the cursor flavor (in addition to `.md`).
87
+ - **MCP** — `mcp.json` in the plugin root is default discovery (no manifest declaration needed); `mcpServers` accepts the Cursor array form. An unresolved `${VAR}` in a server's env fails only that server, with a named warning.
88
+ - **Glob paths** — `dir/**` expands directory-recursively; any other glob form is skipped with a warning.
89
+ - **Warn-only fields** — `minClientVersions` (client-version gating not enforced) and `variables` (not prompted; set values via environment) surface as warnings and are otherwise ignored.
90
+
61
91
  ## Skill semantic wiring
62
92
 
63
93
  On top of the skill mount, this package is the consumer that turns `skill-claude-code`'s metadata into actionable registrations:
@@ -0,0 +1,66 @@
1
+ /**
2
+ * The `actor-contract` settings gate for the plugin loader (docs/plans/
3
+ * 2026-09-21-subagent-actor-contract-prompts.md §3.2): the settings namespace
4
+ * holding the model-pattern list that decides whether a marked actor-contract
5
+ * block survives into a subagent persona. The section is installed at plugin
6
+ * mount; `AgentProvider.start` reads the patterns live at spawn time so hot
7
+ * reload and mid-session settings edits apply on the next spawn.
8
+ *
9
+ * This package publishes NO cordis service: the task package owns
10
+ * `ccActorContractGate`, and a duplicate provide would throw on co-mount.
11
+ * Only the settings section is installed here (installSectionSafe's
12
+ * multi-owner semantics mean the second mounter gets a live setSource via
13
+ * settings/updated; identical schema + defaults make that safe), and the
14
+ * returned gate instance is the package's local live reader.
15
+ *
16
+ * KEEP IN SYNC: the namespace + schema are duplicated in
17
+ * `packages/subagent/task/src/actor-contract-gate.ts` so either mount order
18
+ * wins via installSectionSafe's multi-owner semantics; the candidates rule
19
+ * and dispatch default are shared from `@dsh-cc/claude-code-agents`.
20
+ *
21
+ * @module @dsh-cc/plugin-loader/actor-contract-gate
22
+ */
23
+ import type { Context } from '@deepseek-ai/cordis';
24
+ import type { SettingsNamespace } from '@deepseek-ai/dsh-settings';
25
+ import z from '@deepseek-ai/schemastery';
26
+ import { DEFAULT_ACTOR_CONTRACT_MODELS, gateCandidates } from '@dsh-cc/claude-code-agents';
27
+ export { DEFAULT_ACTOR_CONTRACT_MODELS, gateCandidates };
28
+ /** The settings namespace for the actor-contract gate (kebab-case discipline). */
29
+ export declare const ACTOR_CONTRACT_NAMESPACE: SettingsNamespace;
30
+ /** The resolved settings section for the namespace. */
31
+ export interface ActorContractSettings {
32
+ /** Model patterns (case-insensitive globs, `*` the only wildcard). */
33
+ readonly models: string[];
34
+ }
35
+ /**
36
+ * The section schema. The default DOES materialize (unlike permission-rules'
37
+ * absence-preserving sub-objects): gate-on-by-default is the product decision,
38
+ * while an explicit user `[]` stays a real array and closes the gate.
39
+ */
40
+ export declare function actorContractSettingsSchema(): z<ActorContractSettings>;
41
+ /**
42
+ * Live gate state pinned to one context: `setSource`/`onChange` follow the
43
+ * settings-ns hook surface (the second owner of the namespace gets a live
44
+ * `setSource` via `settings/updated`, so patterns stay hot). When no settings
45
+ * provider ever attaches, the class keeps the DISPATCH-TIME default.
46
+ */
47
+ export declare class ActorContractGate {
48
+ private current;
49
+ private read;
50
+ /** The configured patterns; read at spawn time by the seam call site. */
51
+ patterns(): readonly string[];
52
+ /** Settings-ns hook: point the live read at the current section source. */
53
+ setSource(current: () => ActorContractSettings): void;
54
+ /** Settings-ns hook: re-read the section (attach or a committed change). */
55
+ onChange(): void;
56
+ }
57
+ /**
58
+ * Install the `actor-contract` settings section when a settings provider
59
+ * exists (absent provider → default patterns) and return the local live gate
60
+ * the plugin's `AgentProvider`s read at spawn time. No cordis service is
61
+ * provided — the task package owns `ccActorContractGate`.
62
+ * @param ctx - the context the loader mounts on.
63
+ * @returns the live gate instance.
64
+ */
65
+ export declare function mountActorContractGate(ctx: Context): ActorContractGate;
66
+ //# sourceMappingURL=actor-contract-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actor-contract-gate.d.ts","sourceRoot":"","sources":["../src/actor-contract-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClE,OAAO,CAAC,MAAM,0BAA0B,CAAA;AAExC,OAAO,EAAE,6BAA6B,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAI1F,OAAO,EAAE,6BAA6B,EAAE,cAAc,EAAE,CAAA;AAExD,kFAAkF;AAClF,eAAO,MAAM,wBAAwB,EAAuB,iBAAiB,CAAA;AAE7E,uDAAuD;AACvD,MAAM,WAAW,qBAAqB;IACpC,sEAAsE;IACtE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,CAAC,CAAC,qBAAqB,CAAC,CAItE;AAED;;;;;GAKG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAmD;IAClE,OAAO,CAAC,IAAI,CAA2C;IAEvD,yEAAyE;IACzE,QAAQ,IAAI,SAAS,MAAM,EAAE;IAI7B,2EAA2E;IAC3E,SAAS,CAAC,OAAO,EAAE,MAAM,qBAAqB,GAAG,IAAI;IAIrD,4EAA4E;IAC5E,QAAQ,IAAI,IAAI;CAGjB;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,iBAAiB,CAWtE"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * The `actor-contract` settings gate for the plugin loader (docs/plans/
3
+ * 2026-09-21-subagent-actor-contract-prompts.md §3.2): the settings namespace
4
+ * holding the model-pattern list that decides whether a marked actor-contract
5
+ * block survives into a subagent persona. The section is installed at plugin
6
+ * mount; `AgentProvider.start` reads the patterns live at spawn time so hot
7
+ * reload and mid-session settings edits apply on the next spawn.
8
+ *
9
+ * This package publishes NO cordis service: the task package owns
10
+ * `ccActorContractGate`, and a duplicate provide would throw on co-mount.
11
+ * Only the settings section is installed here (installSectionSafe's
12
+ * multi-owner semantics mean the second mounter gets a live setSource via
13
+ * settings/updated; identical schema + defaults make that safe), and the
14
+ * returned gate instance is the package's local live reader.
15
+ *
16
+ * KEEP IN SYNC: the namespace + schema are duplicated in
17
+ * `packages/subagent/task/src/actor-contract-gate.ts` so either mount order
18
+ * wins via installSectionSafe's multi-owner semantics; the candidates rule
19
+ * and dispatch default are shared from `@dsh-cc/claude-code-agents`.
20
+ *
21
+ * @module @dsh-cc/plugin-loader/actor-contract-gate
22
+ */
23
+ import z from '@deepseek-ai/schemastery';
24
+ import { installSectionSafe } from '@dsh-cc/settings-ns';
25
+ import { DEFAULT_ACTOR_CONTRACT_MODELS, gateCandidates } from '@dsh-cc/claude-code-agents';
26
+ // The candidates rule and dispatch default live in @dsh-cc/claude-code-agents
27
+ // so every seam (task, loader, resume-pins re-fingerprint) shares one source.
28
+ export { DEFAULT_ACTOR_CONTRACT_MODELS, gateCandidates };
29
+ /** The settings namespace for the actor-contract gate (kebab-case discipline). */
30
+ export const ACTOR_CONTRACT_NAMESPACE = 'actor-contract';
31
+ /**
32
+ * The section schema. The default DOES materialize (unlike permission-rules'
33
+ * absence-preserving sub-objects): gate-on-by-default is the product decision,
34
+ * while an explicit user `[]` stays a real array and closes the gate.
35
+ */
36
+ export function actorContractSettingsSchema() {
37
+ return z.object({
38
+ models: z.array(z.string()).default([...DEFAULT_ACTOR_CONTRACT_MODELS]),
39
+ });
40
+ }
41
+ /**
42
+ * Live gate state pinned to one context: `setSource`/`onChange` follow the
43
+ * settings-ns hook surface (the second owner of the namespace gets a live
44
+ * `setSource` via `settings/updated`, so patterns stay hot). When no settings
45
+ * provider ever attaches, the class keeps the DISPATCH-TIME default.
46
+ */
47
+ export class ActorContractGate {
48
+ current = DEFAULT_ACTOR_CONTRACT_MODELS;
49
+ read;
50
+ /** The configured patterns; read at spawn time by the seam call site. */
51
+ patterns() {
52
+ return this.current;
53
+ }
54
+ /** Settings-ns hook: point the live read at the current section source. */
55
+ setSource(current) {
56
+ this.read = current;
57
+ }
58
+ /** Settings-ns hook: re-read the section (attach or a committed change). */
59
+ onChange() {
60
+ this.current = this.read?.().models ?? [...DEFAULT_ACTOR_CONTRACT_MODELS];
61
+ }
62
+ }
63
+ /**
64
+ * Install the `actor-contract` settings section when a settings provider
65
+ * exists (absent provider → default patterns) and return the local live gate
66
+ * the plugin's `AgentProvider`s read at spawn time. No cordis service is
67
+ * provided — the task package owns `ccActorContractGate`.
68
+ * @param ctx - the context the loader mounts on.
69
+ * @returns the live gate instance.
70
+ */
71
+ export function mountActorContractGate(ctx) {
72
+ const gate = new ActorContractGate();
73
+ ctx.inject(['settings'], () => {
74
+ installSectionSafe(ctx, ACTOR_CONTRACT_NAMESPACE, actorContractSettingsSchema(), {
75
+ models: [...DEFAULT_ACTOR_CONTRACT_MODELS],
76
+ }, {
77
+ setSource: (current) => { gate.setSource(current); },
78
+ onChange: () => gate.onChange(),
79
+ });
80
+ });
81
+ return gate;
82
+ }
83
+ //# sourceMappingURL=actor-contract-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actor-contract-gate.js","sourceRoot":"","sources":["../src/actor-contract-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,CAAC,MAAM,0BAA0B,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAE,6BAA6B,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAE1F,8EAA8E;AAC9E,8EAA8E;AAC9E,OAAO,EAAE,6BAA6B,EAAE,cAAc,EAAE,CAAA;AAExD,kFAAkF;AAClF,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAqC,CAAA;AAQ7E;;;;GAIG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO,CAAC,CAAC,MAAM,CAAC;QACd,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,6BAA6B,CAAC,CAAC;KACxE,CAAwC,CAAA;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,iBAAiB;IACpB,OAAO,GAAsB,6BAA6B,CAAA;IAC1D,IAAI,CAA2C;IAEvD,yEAAyE;IACzE,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,2EAA2E;IAC3E,SAAS,CAAC,OAAoC;QAC5C,IAAI,CAAC,IAAI,GAAG,OAAO,CAAA;IACrB,CAAC;IAED,4EAA4E;IAC5E,QAAQ;QACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,6BAA6B,CAAC,CAAA;IAC3E,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAY;IACjD,MAAM,IAAI,GAAG,IAAI,iBAAiB,EAAE,CAAA;IACpC,GAAG,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE;QAC5B,kBAAkB,CAAwB,GAAG,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,EAAE;YACtG,MAAM,EAAE,CAAC,GAAG,6BAA6B,CAAC;SAC3C,EAAE;YACD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA,CAAC,CAAC;YACnD,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;SAChC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,OAAO,IAAI,CAAA;AACb,CAAC"}
package/lib/agents.d.ts CHANGED
@@ -57,10 +57,11 @@ export declare class AgentProvider implements SubagentBackend {
57
57
  private readonly resolve;
58
58
  private readonly resolveModel?;
59
59
  private readonly registeredName?;
60
+ private readonly gatePatterns?;
60
61
  /** Loader brand (see `PLUGIN_AGENT_PROVIDER_BRAND`); read via `isPluginAgentProvider`. */
61
62
  readonly [PLUGIN_AGENT_PROVIDER_BRAND] = true;
62
63
  private readonly backendName;
63
- constructor(agentDefinition: AgentDefinition, resolve: (name: string) => SubagentBackend | undefined, resolveModel?: ResolveModel | undefined, registeredName?: string | undefined);
64
+ constructor(agentDefinition: AgentDefinition, resolve: (name: string) => SubagentBackend | undefined, resolveModel?: ResolveModel | undefined, registeredName?: string | undefined, gatePatterns?: (() => readonly string[]) | undefined);
64
65
  /** Register-time provider name; `start` forwards to the backend. */
65
66
  get name(): string;
66
67
  /** The agent definition this provider overlays — unchanged, bare `agentType`. */
@@ -123,6 +124,8 @@ export interface MountAgentsOptions {
123
124
  readonly namespacePrefix?: string;
124
125
  /** Optional spawn-time model resolver threaded into every provider. */
125
126
  readonly resolveModel?: ResolveModel;
127
+ /** Live gate patterns for the actor-contract block (read at spawn time). */
128
+ readonly gatePatterns?: () => readonly string[];
126
129
  }
127
130
  /**
128
131
  * Load and register a plugin's sub-agent definitions.
@@ -132,5 +135,6 @@ export interface MountAgentsOptions {
132
135
  export declare function mountAgents(options: MountAgentsOptions): Promise<{
133
136
  disposers: (() => void)[];
134
137
  tally: ComponentTally;
138
+ warnings: string[];
135
139
  }>;
136
140
  //# sourceMappingURL=agents.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
package/lib/agents.js CHANGED
@@ -11,10 +11,13 @@
11
11
  *
12
12
  * @module
13
13
  */
14
+ import { readdir } from 'node:fs/promises';
14
15
  import { join, resolve } from 'node:path';
15
- import { loadAgentsDir } from '@dsh-cc/claude-code-agents';
16
- import { toAgentOptions } from '@dsh-cc/model-aliases';
16
+ import { loadAgentsDir, applyActorContract } from '@dsh-cc/claude-code-agents';
17
+ import { resolveSpawnEffort, toAgentOptions } from '@dsh-cc/model-aliases';
18
+ import { gateCandidates, DEFAULT_ACTOR_CONTRACT_MODELS } from "./actor-contract-gate.js";
17
19
  import { ComponentTally } from "./seams.js";
20
+ import { globPathKind } from "./manifest.js";
18
21
  /**
19
22
  * Brand key stamped on every `AgentProvider` this loader creates. The task
20
23
  * package's `PluginAgentIndex` requires it (besides the structural checks)
@@ -32,14 +35,16 @@ export class AgentProvider {
32
35
  resolve;
33
36
  resolveModel;
34
37
  registeredName;
38
+ gatePatterns;
35
39
  /** Loader brand (see `PLUGIN_AGENT_PROVIDER_BRAND`); read via `isPluginAgentProvider`. */
36
40
  [PLUGIN_AGENT_PROVIDER_BRAND] = true;
37
41
  backendName = 'fork';
38
- constructor(agentDefinition, resolve, resolveModel, registeredName) {
42
+ constructor(agentDefinition, resolve, resolveModel, registeredName, gatePatterns) {
39
43
  this.agentDefinition = agentDefinition;
40
44
  this.resolve = resolve;
41
45
  this.resolveModel = resolveModel;
42
46
  this.registeredName = registeredName;
47
+ this.gatePatterns = gatePatterns;
43
48
  }
44
49
  /** Register-time provider name; `start` forwards to the backend. */
45
50
  get name() {
@@ -76,9 +81,15 @@ export class AgentProvider {
76
81
  }
77
82
  const delegation = request;
78
83
  const modelOverride = this.resolveModelOverride();
84
+ // Actor-contract gate (§3.1): strip/keep the marked block per the
85
+ // configured model patterns, read live at spawn time. Inherit model →
86
+ // no candidates → fail-closed strip. Candidates reuse the same model
87
+ // resolution the agentOptions overlay uses: resolved route id leads, the
88
+ // raw frontmatter token is the sole candidate when no route resolves.
89
+ const gatedPrompt = applyActorContract(this.agentDefinition.systemPrompt, gateCandidates(this.agentDefinition.model, modelOverride), this.gatePatterns?.() ?? DEFAULT_ACTOR_CONTRACT_MODELS);
79
90
  return backend.start({
80
91
  ...delegation,
81
- prompt: this.agentDefinition.systemPrompt,
92
+ prompt: gatedPrompt,
82
93
  ...modelOverride !== undefined
83
94
  ? { agentOptions: { ...delegation['agentOptions'], ...modelOverride } }
84
95
  : {},
@@ -100,12 +111,12 @@ export class AgentProvider {
100
111
  resolveModelOverride() {
101
112
  const model = this.agentDefinition.model;
102
113
  const resolver = this.resolveModel;
103
- if (resolver === undefined) {
104
- return model !== undefined ? { model } : undefined;
105
- }
106
- if (model === undefined)
107
- return undefined;
108
- return toAgentOptions(resolver(model));
114
+ // Precedence: resolver-resolved effort ($level suffix / alias target) wins
115
+ // over frontmatter def.effort (resolveSpawnEffort, shared with task tool).
116
+ const route = resolver === undefined || model === undefined ? undefined : resolver(model);
117
+ const effort = resolveSpawnEffort(route, this.agentDefinition.effort);
118
+ const override = resolver === undefined ? (model !== undefined ? { model } : undefined) : toAgentOptions(route);
119
+ return effort === undefined ? override : { ...override, reasoningEffort: effort };
109
120
  }
110
121
  }
111
122
  /** Agents live under this directory in a plugin root, when present. */
@@ -134,14 +145,15 @@ export function scopedType(prefix, agentType) {
134
145
  export async function mountAgents(options) {
135
146
  const tally = new ComponentTally('agents');
136
147
  const disposers = [];
148
+ const globWarnings = [];
137
149
  if (options.subagents === undefined) {
138
150
  tally.addSkipped('subagent seam "subagents" is not mounted');
139
- return { disposers, tally };
151
+ return { disposers, tally, warnings: globWarnings };
140
152
  }
141
- const definitions = await loadAgentDefinitions(options.pluginRoot, options.manifest);
153
+ const definitions = await loadAgentDefinitions(options.pluginRoot, options.manifest, globWarnings);
142
154
  if (definitions.length === 0) {
143
155
  tally.addSkipped('plugin ships no agents directory or manifest agents paths');
144
- return { disposers, tally };
156
+ return { disposers, tally, warnings: globWarnings };
145
157
  }
146
158
  const subagents = options.subagents;
147
159
  const prefix = options.namespacePrefix;
@@ -162,7 +174,7 @@ export async function mountAgents(options) {
162
174
  tally.addSkipped(`skipped agent "${definition.agentType}": duplicate provider name "${scopedName}" is already registered`);
163
175
  continue;
164
176
  }
165
- const provider = new AgentProvider(definition, name => subagents.getProvider(name), options.resolveModel, ...prefix !== undefined ? [scopedName] : []);
177
+ const provider = new AgentProvider(definition, name => subagents.getProvider(name), options.resolveModel, ...prefix !== undefined ? [scopedName] : [], options.gatePatterns);
166
178
  disposers.push(subagents.registerProvider(provider));
167
179
  tally.addLoaded();
168
180
  }
@@ -174,17 +186,32 @@ export async function mountAgents(options) {
174
186
  dispose();
175
187
  throw error;
176
188
  }
177
- return { disposers, tally };
189
+ return { disposers, tally, warnings: globWarnings };
178
190
  }
179
191
  /** Load agent definitions from the standard `agents/` dir and manifest paths. */
180
- async function loadAgentDefinitions(pluginRoot, manifest) {
192
+ async function loadAgentDefinitions(pluginRoot, manifest, globWarnings) {
181
193
  const dirs = [join(pluginRoot, STANDARD_AGENTS_DIR)];
182
- const extra = manifest.agents.map((path) => {
183
- const resolved = resolve(pluginRoot, path);
194
+ for (const path of manifest.agents) {
195
+ // Glob policy (plan §3.4): `agents/**` walks recursively; any other glob
196
+ // metacharacter is skipped with a warning, never expanded.
197
+ const kind = globPathKind(path);
198
+ if (kind === 'unsupported') {
199
+ const reason = `skipped agents entry "${path}": glob patterns other than a trailing "/**" are not expanded`;
200
+ globWarnings.push(reason);
201
+ continue;
202
+ }
203
+ const recursive = kind === 'recursive';
204
+ const expanded = recursive ? path.slice(0, -3) : path;
205
+ const resolved = resolve(pluginRoot, expanded);
184
206
  // An inline path may name one `.md`/`.json` file; load its parent dir.
185
- return /\.(md|json)$/.test(resolved) ? dirname(resolved) : resolved;
186
- });
187
- dirs.push(...extra);
207
+ const dir = /\.(md|json)$/.test(resolved) ? dirname(resolved) : resolved;
208
+ if (recursive) {
209
+ dirs.push(...await collectAgentDirs(dir));
210
+ }
211
+ else {
212
+ dirs.push(dir);
213
+ }
214
+ }
188
215
  const byName = new Map();
189
216
  for (const dir of dirs) {
190
217
  for (const agent of await loadAgentsDir(dir, 'project')) {
@@ -193,6 +220,23 @@ async function loadAgentDefinitions(pluginRoot, manifest) {
193
220
  }
194
221
  return Array.from(byName.values());
195
222
  }
223
+ /** The dir itself plus every subdirectory, recursively (plan §3.4 cheap `/**` expansion). */
224
+ async function collectAgentDirs(dir) {
225
+ const found = [dir];
226
+ let entries;
227
+ try {
228
+ entries = await readdir(dir, { withFileTypes: true });
229
+ }
230
+ catch {
231
+ return found;
232
+ }
233
+ for (const entry of entries) {
234
+ if (!entry.isDirectory())
235
+ continue;
236
+ found.push(...await collectAgentDirs(join(dir, entry.name)));
237
+ }
238
+ return found;
239
+ }
196
240
  function dirname(path) {
197
241
  const index = path.lastIndexOf('/');
198
242
  return index === -1 ? '.' : path.slice(0, index);
package/lib/agents.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
package/lib/commands.d.ts CHANGED
@@ -103,6 +103,7 @@ export declare function mountCommands(options: MountCommandsOptions): {
103
103
  disposers: (() => void)[];
104
104
  mounted: MountedPluginCommand[];
105
105
  tally: ComponentTally;
106
+ warnings?: string[];
106
107
  };
107
108
  /**
108
109
  * Substitute `$ARGUMENTS` with the invocation's raw input and steer the
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAAa,MAAM,YAAY,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,mEAAmE;AACnE,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,iBAAiB,GAAG,MAAM,IAAI,CAAA;CACpD;AAED,8DAA8D;AAC9D,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,0CAA0C;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,uDAAuD;IACvD,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACjC,mFAAmF;IACnF,QAAQ,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE,qBAAqB,KAAK,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;CAChG;AAED,yDAAyD;AACzD;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAA;KAAE,CAAA;IACvD,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAErD,kFAAkF;AAClF,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,kCAAkC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,0CAA0C;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,oDAAoD;IACpD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAC/B;AAED,+EAA+E;AAC/E,MAAM,WAAW,oBAAoB;IACnC,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;IAClC;;;OAGG;IACH,GAAG,CAAC,UAAU,EAAE,qBAAqB,GAAG,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;CAC/E;AAED,yEAAyE;AACzE,eAAO,MAAM,qBAAqB,aAAa,CAAA;AAE/C,kDAAkD;AAClD,MAAM,WAAW,oBAAoB;IACnC,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAA;IACnC,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAA;CAC5C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG;IAC5D,SAAS,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;IACzB,OAAO,EAAE,oBAAoB,EAAE,CAAA;IAC/B,KAAK,EAAE,cAAc,CAAA;CACtB,CA4CA;AAwDD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAkB7H"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAA2B,MAAM,YAAY,CAAA;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAG3C,mEAAmE;AACnE,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,iBAAiB,GAAG,MAAM,IAAI,CAAA;CACpD;AAED,8DAA8D;AAC9D,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,0CAA0C;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,uDAAuD;IACvD,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACjC,mFAAmF;IACnF,QAAQ,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE,qBAAqB,KAAK,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;CAChG;AAED,yDAAyD;AACzD;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAA;KAAE,CAAA;IACvD,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAErD,kFAAkF;AAClF,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,kCAAkC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,0CAA0C;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,oDAAoD;IACpD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAC/B;AAED,+EAA+E;AAC/E,MAAM,WAAW,oBAAoB;IACnC,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;IAClC;;;OAGG;IACH,GAAG,CAAC,UAAU,EAAE,qBAAqB,GAAG,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;CAC/E;AAED,yEAAyE;AACzE,eAAO,MAAM,qBAAqB,aAAa,CAAA;AAE/C,kDAAkD;AAClD,MAAM,WAAW,oBAAoB;IACnC,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAA;IACnC,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAA;CAC5C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG;IAC5D,SAAS,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;IACzB,OAAO,EAAE,oBAAoB,EAAE,CAAA;IAC/B,KAAK,EAAE,cAAc,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB,CA8CA;AA8ID;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAkB7H"}
package/lib/commands.js CHANGED
@@ -11,8 +11,9 @@
11
11
  import { readdirSync, readFileSync } from 'node:fs';
12
12
  import { createUserMessage } from '@deepseek-ai/dsh-llm';
13
13
  import { parseCcFrontmatter, parseCcFrontmatterDocument } from '@dsh-cc/skill-loader';
14
- import { basename, join, resolve } from 'node:path';
14
+ import { basename, extname, join, resolve } from 'node:path';
15
15
  import { ComponentTally } from "./seams.js";
16
+ import { globPathKind } from "./manifest.js";
16
17
  /** Commands live under this directory in a plugin root, when present. */
17
18
  export const STANDARD_COMMANDS_DIR = 'commands';
18
19
  /**
@@ -34,16 +35,18 @@ export function mountCommands(options) {
34
35
  const tally = new ComponentTally('commands');
35
36
  const disposers = [];
36
37
  const mounted = [];
38
+ const globWarnings = [];
37
39
  if (options.commands === undefined) {
38
40
  tally.addSkipped('commands seam "commands" is not mounted');
39
41
  return { disposers, mounted, tally };
40
42
  }
43
+ const flavor = options.manifest.flavor;
41
44
  const entries = options.manifest.commandsDeclared
42
- ? [...options.manifest.commands]
43
- : defaultCommandEntries(options.pluginRoot, tally);
45
+ ? expandDeclaredCommandDirs(options.pluginRoot, [...options.manifest.commands], flavor, tally, globWarnings)
46
+ : defaultCommandEntries(options.pluginRoot, flavor, tally, globWarnings);
44
47
  if (entries.length === 0) {
45
48
  tally.addSkipped('plugin ships no commands');
46
- return { disposers, mounted, tally };
49
+ return { disposers, mounted, tally, warnings: globWarnings };
47
50
  }
48
51
  for (const entry of entries) {
49
52
  const rendered = renderCommand(options.pluginRoot, entry);
@@ -74,14 +77,85 @@ export function mountCommands(options) {
74
77
  tally.addSkipped(`bare name "${entry.name}" not registered: ${String(error)}`);
75
78
  }
76
79
  }
77
- return { disposers, mounted, tally };
80
+ return { disposers, mounted, tally, warnings: globWarnings };
78
81
  }
79
82
  /**
80
- * Scan `commands/*.md` when the manifest omitted `commands`. Nested
83
+ * Scan `commands/*.{md,txt}` when the manifest omitted `commands`. Nested
81
84
  * subdirectories are skipped with a reason (no silent drop, no colon names).
85
+ * `.txt` files mount only on the cursor flavor (plan §3.2) as plain text.
86
+ */
87
+ function defaultCommandEntries(pluginRoot, flavor, tally, globWarnings) {
88
+ void globWarnings; // the default dir is a literal path; no glob policy applies
89
+ return scanCommandDir(pluginRoot, STANDARD_COMMANDS_DIR, flavor, tally);
90
+ }
91
+ /** Whether a command file name mounts for this flavor. */
92
+ function isCommandFile(name, flavor) {
93
+ return name.endsWith('.md') || (flavor === 'cursor' && name.endsWith('.txt'));
94
+ }
95
+ /** Walk one directory recursively collecting command files (plan §3.4 `/**`). */
96
+ function walkCommandDir(dir, flavor, found, tally) {
97
+ let entries;
98
+ try {
99
+ entries = readdirSync(dir, { withFileTypes: true });
100
+ }
101
+ catch {
102
+ return;
103
+ }
104
+ for (const entry of entries) {
105
+ const path = join(dir, entry.name);
106
+ if (entry.isDirectory())
107
+ walkCommandDir(path, flavor, found, tally);
108
+ else if ((entry.isFile() || entry.isSymbolicLink()) && isCommandFile(entry.name, flavor)) {
109
+ found.push({ name: basename(entry.name, extname(entry.name)), source: path });
110
+ }
111
+ }
112
+ }
113
+ /**
114
+ * Expand manifest-declared command entries (plan §3.4): a `/**` suffix walks
115
+ * the base directory recursively; any other glob metacharacter skips the
116
+ * entry with a warning (never expanded); literals keep today's semantics.
82
117
  */
83
- function defaultCommandEntries(pluginRoot, tally) {
84
- const dir = join(pluginRoot, STANDARD_COMMANDS_DIR);
118
+ function expandDeclaredCommandDirs(pluginRoot, entries, flavor, tally, globWarnings) {
119
+ const expanded = [];
120
+ for (const entry of entries) {
121
+ if (entry.source === undefined) {
122
+ expanded.push(entry);
123
+ continue;
124
+ }
125
+ const kind = globPathKind(entry.source);
126
+ if (kind === 'unsupported') {
127
+ const reason = `skipped commands entry "${entry.source}": glob patterns other than a trailing "/**" are not expanded`;
128
+ tally.addSkipped(reason);
129
+ globWarnings.push(reason);
130
+ continue;
131
+ }
132
+ if (kind === 'recursive') {
133
+ walkCommandDir(resolve(pluginRoot, entry.source.slice(0, -3)), flavor, expanded, tally);
134
+ continue;
135
+ }
136
+ const path = resolve(pluginRoot, entry.source);
137
+ let files;
138
+ try {
139
+ files = readdirSync(path, { withFileTypes: true });
140
+ }
141
+ catch {
142
+ // Not a directory (or unreadable): keep the entry and let renderCommand fail loud.
143
+ expanded.push(entry);
144
+ continue;
145
+ }
146
+ for (const file of files) {
147
+ if (!file.isFile() && !file.isSymbolicLink())
148
+ continue;
149
+ if (!isCommandFile(file.name, flavor))
150
+ continue;
151
+ expanded.push({ ...entry, name: basename(file.name, extname(file.name)), source: join(path, file.name) });
152
+ }
153
+ }
154
+ return expanded;
155
+ }
156
+ /** List command files under one commands directory, relative paths preserved. */
157
+ function scanCommandDir(pluginRoot, dirRelativeToRoot, flavor, tally) {
158
+ const dir = join(pluginRoot, dirRelativeToRoot);
85
159
  let entries;
86
160
  try {
87
161
  entries = readdirSync(dir, { withFileTypes: true });
@@ -97,9 +171,9 @@ function defaultCommandEntries(pluginRoot, tally) {
97
171
  }
98
172
  if (!entry.isFile() && !entry.isSymbolicLink())
99
173
  continue;
100
- if (!entry.name.endsWith('.md'))
174
+ if (!isCommandFile(entry.name, flavor))
101
175
  continue;
102
- found.push({ name: basename(entry.name, '.md'), source: join(STANDARD_COMMANDS_DIR, entry.name) });
176
+ found.push({ name: basename(entry.name, extname(entry.name)), source: join(dirRelativeToRoot, entry.name) });
103
177
  }
104
178
  return found;
105
179
  }
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAA;AACrF,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AA+D5C,yEAAyE;AACzE,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAA;AAY/C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,aAAa,CAAC,OAA6B;IAMzD,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,CAAA;IAC5C,MAAM,SAAS,GAAmB,EAAE,CAAA;IACpC,MAAM,OAAO,GAA2B,EAAE,CAAA;IAC1C,MAAM,YAAY,GAAa,EAAE,CAAA;IACjC,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,KAAK,CAAC,UAAU,CAAC,yCAAyC,CAAC,CAAA;QAC3D,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IACtC,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAA;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,gBAAgB;QAC/C,CAAC,CAAC,yBAAyB,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC;QAC5G,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;IAC1E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAA;QAC5C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;IAC9D,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;QACzD,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACjC,KAAK,CAAC,SAAS,CAAC,YAAY,KAAK,CAAC,IAAI,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;YAC7D,SAAQ;QACV,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,CAAA;QACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAA;QAChC,MAAM,IAAI,GAAwB;YAChC,IAAI,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;YAC9C,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;YAC7B,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,IAAI,EAAE;YAC5D,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE;SACpD,CAAA;QACD,MAAM,GAAG,GAAG,CAAC,UAAiC,EAAE,EAAE,CAAC,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;QAC1F,IAAI,CAAC;YACH,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACvC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE;gBAChD,OAAO,EAAE,GAAG;aACb,CAAC,CAAC,CAAA;YACH,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAA;YAC3B,KAAK,CAAC,SAAS,EAAE,CAAA;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,KAAK,CAAC,UAAU,CAAC,cAAc,KAAK,CAAC,IAAI,qBAAqB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAChF,CAAC;IACH,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;AAC9D,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAC5B,UAAkB,EAClB,MAAoB,EACpB,KAAqB,EACrB,YAAsB;IAEtB,KAAK,YAAY,CAAA,CAAC,4DAA4D;IAC9E,OAAO,cAAc,CAAC,UAAU,EAAE,qBAAqB,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;AACzE,CAAC;AAED,0DAA0D;AAC1D,SAAS,aAAa,CAAC,IAAY,EAAE,MAAoB;IACvD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;AAC/E,CAAC;AAED,iFAAiF;AACjF,SAAS,cAAc,CAAC,GAAW,EAAE,MAAoB,EAAE,KAAkB,EAAE,KAAqB;IAClG,IAAI,OAAO,CAAA;IACX,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAM;IACR,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAClC,IAAI,KAAK,CAAC,WAAW,EAAE;YAAE,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;aAC9D,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;YACzF,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QAC/E,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,yBAAyB,CAChC,UAAkB,EAClB,OAAoB,EACpB,MAAoB,EACpB,KAAqB,EACrB,YAAsB;IAEtB,MAAM,QAAQ,GAAgB,EAAE,CAAA;IAChC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACpB,SAAQ;QACV,CAAC;QACD,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACvC,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,2BAA2B,KAAK,CAAC,MAAM,+DAA+D,CAAA;YACrH,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;YACxB,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACzB,SAAQ;QACV,CAAC;QACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;YACvF,SAAQ;QACV,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QAC9C,IAAI,KAAK,CAAA;QACT,IAAI,CAAC;YACH,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,mFAAmF;YACnF,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACpB,SAAQ;QACV,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBAAE,SAAQ;YACtD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;gBAAE,SAAQ;YAC/C,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC3G,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,iFAAiF;AACjF,SAAS,cAAc,CACrB,UAAkB,EAClB,iBAAyB,EACzB,MAAoB,EACpB,KAAqB;IAErB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;IAC/C,IAAI,OAAO,CAAA;IACX,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;IACD,MAAM,KAAK,GAAgB,EAAE,CAAA;IAC7B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,KAAK,CAAC,UAAU,CAAC,sCAAsC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAA;YACrE,SAAQ;QACV,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;YAAE,SAAQ;QACxD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC;YAAE,SAAQ;QAChD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC9G,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,0EAA0E;AAC1E,SAAS,aAAa,CAAC,UAAkB,EAAE,KAAgB;IAMzD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;IAChC,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QAC9C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YACtC,MAAM,QAAQ,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAA;YAChD,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;YACtC,IAAI,QAAQ,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAA;YACxE,OAAO;gBACL,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,GAAG,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE;gBAC9E,GAAG,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE;aAClF,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,KAAK,EAAE,gCAAgC,KAAK,CAAC,MAAM,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAA;QACrF,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,+CAA+C,EAAE,CAAA;AACnE,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAAiC,EAAE,IAAY;IACnF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC/D,IAAI,SAAkB,CAAA;IACtB,IAAI,CAAC;QACH,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACtD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACjC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACzB,CAAC,CAAC,CAAA;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,sCAAsC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAA;IACvF,CAAC;IACD,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,IAAI,OAAQ,SAAgC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAClH,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;IAC5B,CAAC;IACD,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CACpC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAY,CAAA,EACpC,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,sCAAsC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CACrG,CAAA;AACH,CAAC"}