@agimon-ai/po-domain 0.0.0-alpha.13 → 0.0.0-alpha.14

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.
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  //#region src/schemas/apiContracts.ts
6
- /** This facet contributes agent tools, commands or lifecycle only, with no separate HTTP or socket surface. */
6
+ /** This server plugin contributes agent tools, commands or lifecycle only, with no separate HTTP or socket surface. */
7
7
  const apiContracts = (0, require("@agimon-ai/po-core/apiContracts").defineApiContract)({
8
8
  version: 1,
9
9
  http: [],
@@ -1 +1 @@
1
- {"version":3,"file":"apiContracts.cjs","names":["defineApiContract"],"sources":["../src/schemas/apiContracts.ts"],"sourcesContent":["import { defineApiContract } from '@agimon-ai/po-core/apiContracts';\n\n/** This facet contributes agent tools, commands or lifecycle only, with no separate HTTP or socket surface. */\nexport const apiContracts = defineApiContract({ version: 1, http: [], sockets: [], dynamic: [] });\nexport default apiContracts;\n"],"mappings":";;;;;;AAGA,MAAa,gBAAA,4CAAeA,CAAAA,CAAAA,kBAAAA,CAAkB;CAAE,SAAS;CAAG,MAAM,CAAC;CAAG,SAAS,CAAC;CAAG,SAAS,CAAC;AAAE,CAAC"}
1
+ {"version":3,"file":"apiContracts.cjs","names":["defineApiContract"],"sources":["../src/schemas/apiContracts.ts"],"sourcesContent":["import { defineApiContract } from '@agimon-ai/po-core/apiContracts';\n\n/** This server plugin contributes agent tools, commands or lifecycle only, with no separate HTTP or socket surface. */\nexport const apiContracts = defineApiContract({ version: 1, http: [], sockets: [], dynamic: [] });\nexport default apiContracts;\n"],"mappings":";;;;;;AAGA,MAAa,gBAAA,4CAAeA,CAAAA,CAAAA,kBAAAA,CAAkB;CAAE,SAAS;CAAG,MAAM,CAAC;CAAG,SAAS,CAAC;CAAG,SAAS,CAAC;AAAE,CAAC"}
@@ -1,5 +1,5 @@
1
1
  //#region src/schemas/apiContracts.d.ts
2
- /** This facet contributes agent tools, commands or lifecycle only, with no separate HTTP or socket surface. */
2
+ /** This server plugin contributes agent tools, commands or lifecycle only, with no separate HTTP or socket surface. */
3
3
  export declare const apiContracts: {
4
4
  version: 1;
5
5
  protocols?: Record<string, string> | undefined;
@@ -1,6 +1,6 @@
1
1
  import { defineApiContract } from "@agimon-ai/po-core/apiContracts";
2
2
  //#region src/schemas/apiContracts.ts
3
- /** This facet contributes agent tools, commands or lifecycle only, with no separate HTTP or socket surface. */
3
+ /** This server plugin contributes agent tools, commands or lifecycle only, with no separate HTTP or socket surface. */
4
4
  const apiContracts = defineApiContract({
5
5
  version: 1,
6
6
  http: [],
@@ -1 +1 @@
1
- {"version":3,"file":"apiContracts.mjs","names":[],"sources":["../src/schemas/apiContracts.ts"],"sourcesContent":["import { defineApiContract } from '@agimon-ai/po-core/apiContracts';\n\n/** This facet contributes agent tools, commands or lifecycle only, with no separate HTTP or socket surface. */\nexport const apiContracts = defineApiContract({ version: 1, http: [], sockets: [], dynamic: [] });\nexport default apiContracts;\n"],"mappings":";;;AAGA,MAAa,eAAe,kBAAkB;CAAE,SAAS;CAAG,MAAM,CAAC;CAAG,SAAS,CAAC;CAAG,SAAS,CAAC;AAAE,CAAC"}
1
+ {"version":3,"file":"apiContracts.mjs","names":[],"sources":["../src/schemas/apiContracts.ts"],"sourcesContent":["import { defineApiContract } from '@agimon-ai/po-core/apiContracts';\n\n/** This server plugin contributes agent tools, commands or lifecycle only, with no separate HTTP or socket surface. */\nexport const apiContracts = defineApiContract({ version: 1, http: [], sockets: [], dynamic: [] });\nexport default apiContracts;\n"],"mappings":";;;AAGA,MAAa,eAAe,kBAAkB;CAAE,SAAS;CAAG,MAAM,CAAC;CAAG,SAAS,CAAC;CAAG,SAAS,CAAC;AAAE,CAAC"}
@@ -3,12 +3,12 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  let _agimon_ai_po_core_mcpFacet = require("@agimon-ai/po-core/mcpFacet");
6
- let _agimon_ai_po_core_serverFacet = require("@agimon-ai/po-core/serverFacet");
6
+ let _agimon_ai_po_core_serverPlugin = require("@agimon-ai/po-core/serverPlugin");
7
7
  //#region src/extensions/workspaces/sessions/(backend)/skill/po-author-domain.mcp.ts
8
8
  var po_author_domain_mcp_default = (0, _agimon_ai_po_core_mcpFacet.defineMcpSkill)({
9
9
  name: "po-author-domain",
10
10
  description: "Configure Po plugin catalogs and domain resource selections in domains.yaml. Use when creating or editing .po/domains.yaml or ~/.po/domains.yaml, choosing local, Git, or npm plugins, filtering plugin resources, setting aliases or defaults, or verifying resolved domain composition.",
11
- read: () => (0, _agimon_ai_po_core_serverFacet.readPackageResource)(require("url").pathToFileURL(__filename).href, "src/prompts/po-author-domain/SKILL.md")
11
+ read: () => (0, _agimon_ai_po_core_serverPlugin.readPackageResource)(require("url").pathToFileURL(__filename).href, "src/prompts/po-author-domain/SKILL.md")
12
12
  });
13
13
  //#endregion
14
14
  //#region generated/mcp.ts
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.cjs","names":["defineMcpSkill","readPackageResource","defineMcpPlugin","skillPoAuthorDomain"],"sources":["../../src/extensions/workspaces/sessions/(backend)/skill/po-author-domain.mcp.ts","../../generated/mcp.ts"],"sourcesContent":["import { defineMcpSkill } from '@agimon-ai/po-core/mcpFacet';\nimport { readPackageResource } from '@agimon-ai/po-core/serverFacet';\n\nexport default defineMcpSkill({\n name: 'po-author-domain',\n description:\n 'Configure Po plugin catalogs and domain resource selections in domains.yaml. Use when creating or editing .po/domains.yaml or ~/.po/domains.yaml, choosing local, Git, or npm plugins, filtering plugin resources, setting aliases or defaults, or verifying resolved domain composition.',\n read: () => readPackageResource(import.meta.url, 'src/prompts/po-author-domain/SKILL.md'),\n});\n","// Generated by @agimon-ai/po-build. Do not edit by hand.\nimport { defineMcpPlugin, type PoMcpSessionPlugin } from '@agimon-ai/po-core/mcpFacet';\n\nimport skillPoAuthorDomain from '../src/extensions/workspaces/sessions/(backend)/skill/po-author-domain.mcp';\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\n\nexport const mcp = defineMcpPlugin({\n name: '@agimon-ai/po-domain',\n session: (context) => ({\n get skills(): PoMcpSessionPlugin['skills'] { return [at(skillPoAuthorDomain, context)]; },\n }) satisfies PoMcpSessionPlugin,\n});\n\nexport default mcp;\n"],"mappings":";;;;;;;AAGA,IAAA,gCAAA,GAAeA,4BAAAA,eAAAA,CAAe;CAC5B,MAAM;CACN,aACE;CACF,aAAA,GAAYC,+BAAAA,oBAAAA,CAAAA,QAAAA,KAAAA,CAAAA,CAAAA,cAAAA,UAAAA,CAAAA,CAAAA,MAAqC,uCAAuC;AAC1F,CAAC;;;ACFD,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AAEpE,MAAa,OAAA,GAAMC,4BAAAA,gBAAAA,CAAgB;CACjC,MAAM;CACN,UAAU,aAAa,EACrB,IAAI,SAAuC;EAAE,OAAO,CAAC,GAAGC,8BAAqB,OAAO,CAAC;CAAG,EAC1F;AACF,CAAC"}
1
+ {"version":3,"file":"mcp.cjs","names":["defineMcpSkill","readPackageResource","defineMcpPlugin","skillPoAuthorDomain"],"sources":["../../src/extensions/workspaces/sessions/(backend)/skill/po-author-domain.mcp.ts","../../generated/mcp.ts"],"sourcesContent":["import { defineMcpSkill } from '@agimon-ai/po-core/mcpFacet';\nimport { readPackageResource } from '@agimon-ai/po-core/serverPlugin';\n\nexport default defineMcpSkill({\n name: 'po-author-domain',\n description:\n 'Configure Po plugin catalogs and domain resource selections in domains.yaml. Use when creating or editing .po/domains.yaml or ~/.po/domains.yaml, choosing local, Git, or npm plugins, filtering plugin resources, setting aliases or defaults, or verifying resolved domain composition.',\n read: () => readPackageResource(import.meta.url, 'src/prompts/po-author-domain/SKILL.md'),\n});\n","// Generated by @agimon-ai/po-build. Do not edit by hand.\nimport { defineMcpPlugin, type PoMcpSessionPlugin } from '@agimon-ai/po-core/mcpFacet';\n\nimport skillPoAuthorDomain from '../src/extensions/workspaces/sessions/(backend)/skill/po-author-domain.mcp';\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\n\nexport const mcp = defineMcpPlugin({\n name: '@agimon-ai/po-domain',\n session: (context) => ({\n get skills(): PoMcpSessionPlugin['skills'] { return [at(skillPoAuthorDomain, context)]; },\n }) satisfies PoMcpSessionPlugin,\n});\n\nexport default mcp;\n"],"mappings":";;;;;;;AAGA,IAAA,gCAAA,GAAeA,4BAAAA,eAAAA,CAAe;CAC5B,MAAM;CACN,aACE;CACF,aAAA,GAAYC,gCAAAA,oBAAAA,CAAAA,QAAAA,KAAAA,CAAAA,CAAAA,cAAAA,UAAAA,CAAAA,CAAAA,MAAqC,uCAAuC;AAC1F,CAAC;;;ACFD,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AAEpE,MAAa,OAAA,GAAMC,4BAAAA,gBAAAA,CAAgB;CACjC,MAAM;CACN,UAAU,aAAa,EACrB,IAAI,SAAuC;EAAE,OAAO,CAAC,GAAGC,8BAAqB,OAAO,CAAC;CAAG,EAC1F;AACF,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { defineMcpPlugin, defineMcpSkill } from "@agimon-ai/po-core/mcpFacet";
2
- import { readPackageResource } from "@agimon-ai/po-core/serverFacet";
2
+ import { readPackageResource } from "@agimon-ai/po-core/serverPlugin";
3
3
  //#region src/extensions/workspaces/sessions/(backend)/skill/po-author-domain.mcp.ts
4
4
  var po_author_domain_mcp_default = defineMcpSkill({
5
5
  name: "po-author-domain",
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.mjs","names":["skillPoAuthorDomain"],"sources":["../../src/extensions/workspaces/sessions/(backend)/skill/po-author-domain.mcp.ts","../../generated/mcp.ts"],"sourcesContent":["import { defineMcpSkill } from '@agimon-ai/po-core/mcpFacet';\nimport { readPackageResource } from '@agimon-ai/po-core/serverFacet';\n\nexport default defineMcpSkill({\n name: 'po-author-domain',\n description:\n 'Configure Po plugin catalogs and domain resource selections in domains.yaml. Use when creating or editing .po/domains.yaml or ~/.po/domains.yaml, choosing local, Git, or npm plugins, filtering plugin resources, setting aliases or defaults, or verifying resolved domain composition.',\n read: () => readPackageResource(import.meta.url, 'src/prompts/po-author-domain/SKILL.md'),\n});\n","// Generated by @agimon-ai/po-build. Do not edit by hand.\nimport { defineMcpPlugin, type PoMcpSessionPlugin } from '@agimon-ai/po-core/mcpFacet';\n\nimport skillPoAuthorDomain from '../src/extensions/workspaces/sessions/(backend)/skill/po-author-domain.mcp';\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\n\nexport const mcp = defineMcpPlugin({\n name: '@agimon-ai/po-domain',\n session: (context) => ({\n get skills(): PoMcpSessionPlugin['skills'] { return [at(skillPoAuthorDomain, context)]; },\n }) satisfies PoMcpSessionPlugin,\n});\n\nexport default mcp;\n"],"mappings":";;;AAGA,IAAA,+BAAe,eAAe;CAC5B,MAAM;CACN,aACE;CACF,YAAY,oBAAoB,YAAY,KAAK,uCAAuC;AAC1F,CAAC;;;ACFD,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AAEpE,MAAa,MAAM,gBAAgB;CACjC,MAAM;CACN,UAAU,aAAa,EACrB,IAAI,SAAuC;EAAE,OAAO,CAAC,GAAGA,8BAAqB,OAAO,CAAC;CAAG,EAC1F;AACF,CAAC"}
1
+ {"version":3,"file":"mcp.mjs","names":["skillPoAuthorDomain"],"sources":["../../src/extensions/workspaces/sessions/(backend)/skill/po-author-domain.mcp.ts","../../generated/mcp.ts"],"sourcesContent":["import { defineMcpSkill } from '@agimon-ai/po-core/mcpFacet';\nimport { readPackageResource } from '@agimon-ai/po-core/serverPlugin';\n\nexport default defineMcpSkill({\n name: 'po-author-domain',\n description:\n 'Configure Po plugin catalogs and domain resource selections in domains.yaml. Use when creating or editing .po/domains.yaml or ~/.po/domains.yaml, choosing local, Git, or npm plugins, filtering plugin resources, setting aliases or defaults, or verifying resolved domain composition.',\n read: () => readPackageResource(import.meta.url, 'src/prompts/po-author-domain/SKILL.md'),\n});\n","// Generated by @agimon-ai/po-build. Do not edit by hand.\nimport { defineMcpPlugin, type PoMcpSessionPlugin } from '@agimon-ai/po-core/mcpFacet';\n\nimport skillPoAuthorDomain from '../src/extensions/workspaces/sessions/(backend)/skill/po-author-domain.mcp';\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\n\nexport const mcp = defineMcpPlugin({\n name: '@agimon-ai/po-domain',\n session: (context) => ({\n get skills(): PoMcpSessionPlugin['skills'] { return [at(skillPoAuthorDomain, context)]; },\n }) satisfies PoMcpSessionPlugin,\n});\n\nexport default mcp;\n"],"mappings":";;;AAGA,IAAA,+BAAe,eAAe;CAC5B,MAAM;CACN,aACE;CACF,YAAY,oBAAoB,YAAY,KAAK,uCAAuC;AAC1F,CAAC;;;ACFD,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AAEpE,MAAa,MAAM,gBAAgB;CACjC,MAAM;CACN,UAAU,aAAa,EACrB,IAAI,SAAuC;EAAE,OAAO,CAAC,GAAGA,8BAAqB,OAAO,CAAC;CAAG,EAC1F;AACF,CAAC"}
@@ -9,7 +9,7 @@ const require_domainText = require("../domainText-CbpBLX_M.cjs");
9
9
  let _agimon_ai_po_config_domains = require("@agimon-ai/po-config/domains");
10
10
  let _agimon_ai_po_config_harnessStore = require("@agimon-ai/po-config/harnessStore");
11
11
  let _agimon_ai_po_core_mcpProjection = require("@agimon-ai/po-core/mcpProjection");
12
- let _agimon_ai_po_core_serverFacet = require("@agimon-ai/po-core/serverFacet");
12
+ let _agimon_ai_po_core_serverPlugin = require("@agimon-ai/po-core/serverPlugin");
13
13
  let _agimon_ai_po_core_extensionFile = require("@agimon-ai/po-core/extensionFile");
14
14
  let _agimon_ai_po_core_platform = require("@agimon-ai/po-core/platform");
15
15
  let _agimon_ai_po_core_skills = require("@agimon-ai/po-core/skills");
@@ -172,8 +172,8 @@ var poAuthorDomain_server_default = (0, _agimon_ai_po_core_extensionFile.defineR
172
172
  }
173
173
  },
174
174
  kind: "skill",
175
- path: (0, _agimon_ai_po_core_serverFacet.packageResourcePath)(require("url").pathToFileURL(__filename).href, "src/prompts/po-author-domain/SKILL.md"),
176
- read: () => (0, _agimon_ai_po_core_serverFacet.readPackageResource)(require("url").pathToFileURL(__filename).href, "src/prompts/po-author-domain/SKILL.md")
175
+ path: (0, _agimon_ai_po_core_serverPlugin.packageResourcePath)(require("url").pathToFileURL(__filename).href, "src/prompts/po-author-domain/SKILL.md"),
176
+ read: () => (0, _agimon_ai_po_core_serverPlugin.readPackageResource)(require("url").pathToFileURL(__filename).href, "src/prompts/po-author-domain/SKILL.md")
177
177
  });
178
178
  //#endregion
179
179
  //#region generated/server.ts
@@ -188,11 +188,12 @@ const via = (identity, value) => value === void 0 ? void 0 : {
188
188
  ...identity,
189
189
  ...value
190
190
  };
191
- const facet = (0, _agimon_ai_po_core_serverFacet.defineServerPlugin)({
191
+ const serverPlugin = (0, _agimon_ai_po_core_serverPlugin.defineServerPlugin)({
192
192
  name: "@agimon-ai/po-domain",
193
- providerOverrides: (0, _agimon_ai_po_core_serverFacet.composeServerProviderOverrides)(root_server_default),
193
+ providerOverrides: (0, _agimon_ai_po_core_serverPlugin.composeServerProviderOverrides)(root_server_default),
194
+ injects: (0, _agimon_ai_po_core_extensionFile.composeRootInjects)({ session: [root_server_default] }),
194
195
  session: async (context) => {
195
- const scopeSession = await root_server_default(context);
196
+ const scopeSession = await context.scopeRoot("session", root_server_default, context);
196
197
  const contextSession = {
197
198
  ...context,
198
199
  root: scopeSession.value
@@ -213,7 +214,7 @@ const facet = (0, _agimon_ai_po_core_serverFacet.defineServerPlugin)({
213
214
  }
214
215
  });
215
216
  //#endregion
216
- exports.default = facet;
217
- exports.facet = facet;
217
+ exports.default = serverPlugin;
218
+ exports.serverPlugin = serverPlugin;
218
219
 
219
220
  //# sourceMappingURL=server.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.cjs","names":["nodeHost","listDomainNamesAsync","getOrThrow","materializePluginEntries","resolvePluginEntriesAsync","collectResources","BACKGROUND_CONTEXT","removePath","defineRoot","requirePoFs","withAbortSignal","BACKGROUND_CONTEXT","nodeHost","loadHarnessStateAsync","getOrThrow","materializePluginEntries","resolvePluginEntriesAsync","stageMcpResources","resolveMcpAllowlistAsync","removePath","PO_MCP_PROJECTION_RESOLVER_SERVICE","DOMAIN_COMMAND","listDomainNamesAsync","BACKGROUND_CONTEXT","splitDomains","pickerTitle","domainToggleOptions","toggledDomains","toggleOptionDomain","normalizeDomainNames","PO_RESOURCE_CATALOG_ENTRY_TYPE","defineRoutedContribution","requirePoFs","defineRoutedContribution","defineResource","packageResourcePath","readPackageResource","defineServerPlugin","composeServerProviderOverrides","rootSession","composeRootHooks","commandDomains","resourceDomains","resourcePoAuthorDomain"],"sources":["../../src/extensions/workspaces/sessions/(backend)/_lib/domainServerResources.ts","../../src/extensions/workspaces/sessions/(backend)/root.server.ts","../../src/extensions/workspaces/sessions/(backend)/_lib/domainServerCommand.ts","../../src/extensions/workspaces/sessions/(backend)/command/domains.server.ts","../../src/extensions/workspaces/sessions/(backend)/resource/domains.server.ts","../../src/extensions/workspaces/sessions/(backend)/resource/poAuthorDomain.server.ts","../../generated/server.ts"],"sourcesContent":["import { listDomainNamesAsync, resolvePluginEntriesAsync } from '@agimon-ai/po-config/domains';\nimport type { PoHeadlessExecutionContext, PoHeadlessResource } from '@agimon-ai/po-core/headless';\nimport { BACKGROUND_CONTEXT, getOrThrow, nodeHost, removePath, type FileSystem } from '@agimon-ai/po-core/platform';\n\nimport { materializePluginEntries } from '../../../../../services/pluginMaterializer';\nimport { collectResources } from '../../../../../services/resourceCollector';\n\ntype IoContext = Parameters<FileSystem['readTextFile']>[1];\n\n/** Retain valid domains behind selection conditions; a broken neighbor must not prevent startup. */\nexport async function domainServerResources(\n context: PoHeadlessExecutionContext,\n fs: FileSystem,\n io: IoContext,\n): Promise<PoHeadlessResource[]> {\n const resources: PoHeadlessResource[] = [];\n const home = context.environment.HOME ?? nodeHost.homeDirectory();\n for (const domain of await listDomainNamesAsync(fs, context.repoRoot, io, home)) {\n // Own staging here so collection failures also release their temporary files.\n const temporaryDirectory = getOrThrow(await fs.createTempDir('po-domain-', io));\n try {\n const plugins = await materializePluginEntries(\n await resolvePluginEntriesAsync(fs, context.repoRoot, [domain], [], io, home),\n );\n const collected = await collectResources(context.repoRoot, plugins, {\n agents: false,\n mcp: false,\n sharedSkills: false,\n temporaryDirectory,\n });\n for (const skill of collected.skillSources) {\n resources.push({\n name: skill.name,\n description: skill.description,\n path: skill.path,\n kind: 'skill',\n when: { domain, attribution: { kind: 'domain', mode: domain } },\n read: async () => getOrThrow(await fs.readTextFile(skill.path, BACKGROUND_CONTEXT)),\n });\n }\n } catch (error) {\n await context.client.notify({\n title: `Po domain ${domain} unavailable`,\n body: error instanceof Error ? error.message : String(error),\n level: 'warning',\n });\n } finally {\n await removePath(fs, temporaryDirectory, BACKGROUND_CONTEXT);\n }\n }\n return resources;\n}\n","import { resolvePluginEntriesAsync } from '@agimon-ai/po-config/domains';\nimport { loadHarnessStateAsync } from '@agimon-ai/po-config/harnessStore';\nimport { defineRoot } from '@agimon-ai/po-core/extensionFile';\nimport {\n PO_MCP_PROJECTION_RESOLVER_SERVICE,\n type PoMcpProjectionResolverService,\n} from '@agimon-ai/po-core/mcpProjection';\nimport {\n BACKGROUND_CONTEXT,\n getOrThrow,\n nodeHost,\n removePath,\n requirePoFs,\n withAbortSignal,\n} from '@agimon-ai/po-core/platform';\nimport type { PoServerPluginContext } from '@agimon-ai/po-core/serverFacet';\nimport type { Context } from '@deepseek-ai/cordis';\n\nimport { resolveMcpAllowlistAsync } from '../../../../services/mcpFilter';\nimport { materializePluginEntries } from '../../../../services/pluginMaterializer';\nimport { stageMcpResources } from '../../../../services/resourceCollector';\nimport { domainServerResources } from './_lib/domainServerResources';\nimport type { DomainServerScope } from './_lib/serverScope';\n\nexport default defineRoot(async ({ agent, context: root, signal }: PoServerPluginContext) => {\n const services: Array<(cordis: Context) => void> = [];\n if (!agent) return { value: { resources: [] } satisfies DomainServerScope, services };\n const fs = requirePoFs(root);\n const io = withAbortSignal(signal, BACKGROUND_CONTEXT);\n const execution = agent.context;\n const home = execution.environment.HOME ?? nodeHost.homeDirectory();\n const resolver: PoMcpProjectionResolverService = {\n async resolve(domains) {\n const { state } = await loadHarnessStateAsync(fs, { ...execution.environment }, io);\n const directory = getOrThrow(await fs.createTempDir('po-domain-mcp-', io));\n try {\n const plugins = await materializePluginEntries(\n await resolvePluginEntriesAsync(fs, execution.repoRoot, [...domains], [...state.pluginDirectories], io, home),\n );\n const staged = await stageMcpResources(execution.repoRoot, plugins, {\n enabled: true,\n temporaryDirectory: directory,\n mcpAllowlist: await resolveMcpAllowlistAsync(fs, execution.repoRoot, [...domains], io),\n });\n return {\n projection: staged.mcpProjection,\n cleanup: () => removePath(fs, directory, BACKGROUND_CONTEXT),\n };\n } catch (error) {\n await removePath(fs, directory, BACKGROUND_CONTEXT);\n throw error;\n }\n },\n };\n services.push((cordis) => {\n cordis.plugin((provider) => {\n provider.provide(PO_MCP_PROJECTION_RESOLVER_SERVICE, resolver);\n });\n });\n return {\n value: { resources: await domainServerResources(agent.context, fs, io) } satisfies DomainServerScope,\n services,\n };\n});\n","import { listDomainNamesAsync } from '@agimon-ai/po-config/domains';\nimport { type PoHeadlessCommand, type PoHeadlessHostService } from '@agimon-ai/po-core/headless';\nimport { BACKGROUND_CONTEXT, type FileSystem } from '@agimon-ai/po-core/platform';\nimport { PO_RESOURCE_CATALOG_ENTRY_TYPE, type ResourceCatalogProjection } from '@agimon-ai/po-core/skills';\n\nimport {\n DOMAIN_COMMAND,\n domainToggleOptions,\n normalizeDomainNames,\n pickerTitle,\n splitDomains,\n toggledDomains,\n toggleOptionDomain,\n} from '../../../../../services/domainText';\n\nconst DOMAIN_SELECTION_KIND = 'po-domains-selection';\nconst DOMAIN_SELECTION_VERSION = 1;\n\n/** Full-set web replies share the string transport with legacy single-toggle labels. */\nfunction domainSelectionReply(answer: string): string[] | null {\n if (!answer.trimStart().startsWith('{')) return null;\n const reply: unknown = JSON.parse(answer);\n if (\n typeof reply !== 'object' ||\n reply === null ||\n !('kind' in reply) ||\n reply.kind !== DOMAIN_SELECTION_KIND ||\n !('version' in reply) ||\n reply.version !== DOMAIN_SELECTION_VERSION ||\n !('domains' in reply) ||\n !Array.isArray(reply.domains) ||\n !reply.domains.every((name: unknown): name is string => typeof name === 'string')\n ) {\n throw new Error('Invalid domains selection reply');\n }\n return reply.domains;\n}\n\nexport function createDomainServerCommand(host: PoHeadlessHostService, fs: FileSystem): PoHeadlessCommand {\n return {\n name: DOMAIN_COMMAND,\n description: 'Show or change the active Po domains.',\n async execute(args, execution) {\n const available = await listDomainNamesAsync(fs, execution.repoRoot, BACKGROUND_CONTEXT);\n let requested = splitDomains(args);\n let fullSet = false;\n if (requested.length === 0) {\n const listing = {\n active: [...execution.selection.domains],\n effective: [...execution.selection.domains],\n available,\n };\n const selected = await execution.client.request({\n kind: 'select',\n title: pickerTitle(listing),\n options: domainToggleOptions(listing).map((label) => ({ label, value: label })),\n });\n if (typeof selected !== 'string' || !selected) return;\n const domains = domainSelectionReply(selected);\n fullSet = domains !== null;\n requested = domains ?? toggledDomains(listing.effective, toggleOptionDomain(selected));\n }\n requested = normalizeDomainNames(requested);\n const unknown = requested.filter((name) => !available.includes(name));\n if (unknown.length > 0) throw new Error(`Unknown domain: ${unknown.join(', ')}`);\n if (fullSet) {\n const wanted = new Set(requested);\n const current = new Set(execution.selection.domains);\n requested = [\n ...execution.selection.domains.filter((name) => wanted.has(name)),\n ...available.filter((name) => wanted.has(name) && !current.has(name)),\n ];\n }\n if (\n requested.length === execution.selection.domains.length &&\n requested.every((name, index) => name === execution.selection.domains[index])\n ) {\n return;\n }\n await host.changeSelection({ axis: 'domains', domains: requested });\n // The web composer caches get_commands for `$` completion. Signal only after\n // the headless host has reconciled commands so the re-read sees this selection.\n const projection: ResourceCatalogProjection = { version: 1, revision: Date.now() };\n await execution.session.appendCustomEntry(PO_RESOURCE_CATALOG_ENTRY_TYPE, projection);\n },\n };\n}\n","import { defineRoutedContribution } from '@agimon-ai/po-core/extensionFile';\nimport { requirePoFs } from '@agimon-ai/po-core/platform';\nimport type { PoServerPluginContext } from '@agimon-ai/po-core/serverFacet';\n\nimport { createDomainServerCommand } from '../_lib/domainServerCommand';\nexport default defineRoutedContribution(\n ({ agent, context }: PoServerPluginContext) =>\n agent ? createDomainServerCommand(agent, requirePoFs(context)) : undefined,\n { cardinality: 'optional' },\n);\n","import { defineRoutedContribution } from '@agimon-ai/po-core/extensionFile';\nimport type { WithRoot } from '@agimon-ai/po-core/extensionFile';\nimport type { PoServerPluginContext } from '@agimon-ai/po-core/serverFacet';\n\nimport type { DomainServerScope } from '../_lib/serverScope';\n\nexport default defineRoutedContribution(\n (context: WithRoot<PoServerPluginContext, DomainServerScope>) => context.root.resources,\n { cardinality: 'many' },\n);\n","import { defineResource } from '@agimon-ai/po-core/extensionFile';\nimport { packageResourcePath, readPackageResource } from '@agimon-ai/po-core/serverFacet';\n\nexport default defineResource({\n name: 'po-author-domain',\n description:\n 'Configure Po plugin catalogs and domain resource selections in domains.yaml. Use when creating or editing .po/domains.yaml or ~/.po/domains.yaml, choosing local, Git, or npm plugins, filtering plugin resources, setting aliases or defaults, or verifying resolved domain composition.',\n when: { state: { 'minor-mode': 'help' }, attribution: { kind: 'minor' as const, mode: 'help' } },\n kind: 'skill' as const,\n path: packageResourcePath(import.meta.url, 'src/prompts/po-author-domain/SKILL.md'),\n read: () => readPackageResource(import.meta.url, 'src/prompts/po-author-domain/SKILL.md'),\n});\n","// Generated by @agimon-ai/po-build. Do not edit by hand.\nimport { defineServerPlugin, type PoServerSessionPlugin } from '@agimon-ai/po-core/serverFacet';\nimport { composeServerProviderOverrides } from '@agimon-ai/po-core/serverFacet';\nimport { composeRootHooks } from '@agimon-ai/po-core/extensionFile';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.server';\nimport commandDomains from '../src/extensions/workspaces/sessions/(backend)/command/domains.server';\nimport resourceDomains from '../src/extensions/workspaces/sessions/(backend)/resource/domains.server';\nimport resourcePoAuthorDomain from '../src/extensions/workspaces/sessions/(backend)/resource/poAuthorDomain.server';\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\ntype ManyFactory<T, C> = (context: C) => T | readonly T[];\nconst many = <T, C>(value: T | readonly T[] | ManyFactory<T, C>, context: C): readonly T[] => {\n const resolved = typeof value === 'function' ? (value as ManyFactory<T, C>)(context) : value;\n return Array.isArray(resolved) ? resolved : [resolved as T];\n};\n/* v8 ignore next -- generated normalization branch */\nconst defined = <T>(values: readonly (T | undefined)[]): T[] =>\n values.filter((value): value is T => value !== undefined);\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T =>\n (value === undefined ? undefined : { ...identity, ...(value as object) }) as T;\n\nexport const facet = defineServerPlugin({\n name: '@agimon-ai/po-domain',\n providerOverrides: composeServerProviderOverrides(rootSession),\n session: async (context) => {\n const scopeSession = await rootSession(context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n get commands(): PoServerSessionPlugin['commands'] { return defined([via({ name: 'domains' }, at(commandDomains, contextSession))]); },\n get resources(): PoServerSessionPlugin['resources'] { return [...many(resourceDomains, contextSession), at(resourcePoAuthorDomain, contextSession)]; },\n services: [...(scopeSession.services ?? [])],\n get activities(): PoServerSessionPlugin['activities'] { return [...(scopeSession.activities ?? [])]; },\n };\n },\n});\n\nexport default facet;\n"],"mappings":"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"}
1
+ {"version":3,"file":"server.cjs","names":["nodeHost","listDomainNamesAsync","getOrThrow","materializePluginEntries","resolvePluginEntriesAsync","collectResources","BACKGROUND_CONTEXT","removePath","defineRoot","requirePoFs","withAbortSignal","BACKGROUND_CONTEXT","nodeHost","loadHarnessStateAsync","getOrThrow","materializePluginEntries","resolvePluginEntriesAsync","stageMcpResources","resolveMcpAllowlistAsync","removePath","PO_MCP_PROJECTION_RESOLVER_SERVICE","DOMAIN_COMMAND","listDomainNamesAsync","BACKGROUND_CONTEXT","splitDomains","pickerTitle","domainToggleOptions","toggledDomains","toggleOptionDomain","normalizeDomainNames","PO_RESOURCE_CATALOG_ENTRY_TYPE","defineRoutedContribution","requirePoFs","defineRoutedContribution","defineResource","packageResourcePath","readPackageResource","defineServerPlugin","composeServerProviderOverrides","rootSession","composeRootInjects","composeRootHooks","commandDomains","resourceDomains","resourcePoAuthorDomain"],"sources":["../../src/extensions/workspaces/sessions/(backend)/_lib/domainServerResources.ts","../../src/extensions/workspaces/sessions/(backend)/root.server.ts","../../src/extensions/workspaces/sessions/(backend)/_lib/domainServerCommand.ts","../../src/extensions/workspaces/sessions/(backend)/command/domains.server.ts","../../src/extensions/workspaces/sessions/(backend)/resource/domains.server.ts","../../src/extensions/workspaces/sessions/(backend)/resource/poAuthorDomain.server.ts","../../generated/server.ts"],"sourcesContent":["import { listDomainNamesAsync, resolvePluginEntriesAsync } from '@agimon-ai/po-config/domains';\nimport type { PoHeadlessExecutionContext, PoHeadlessResource } from '@agimon-ai/po-core/headless';\nimport { BACKGROUND_CONTEXT, getOrThrow, nodeHost, removePath, type FileSystem } from '@agimon-ai/po-core/platform';\n\nimport { materializePluginEntries } from '../../../../../services/pluginMaterializer';\nimport { collectResources } from '../../../../../services/resourceCollector';\n\ntype IoContext = Parameters<FileSystem['readTextFile']>[1];\n\n/** Retain valid domains behind selection conditions; a broken neighbor must not prevent startup. */\nexport async function domainServerResources(\n context: PoHeadlessExecutionContext,\n fs: FileSystem,\n io: IoContext,\n): Promise<PoHeadlessResource[]> {\n const resources: PoHeadlessResource[] = [];\n const home = context.environment.HOME ?? nodeHost.homeDirectory();\n for (const domain of await listDomainNamesAsync(fs, context.repoRoot, io, home)) {\n // Own staging here so collection failures also release their temporary files.\n const temporaryDirectory = getOrThrow(await fs.createTempDir('po-domain-', io));\n try {\n const plugins = await materializePluginEntries(\n await resolvePluginEntriesAsync(fs, context.repoRoot, [domain], [], io, home),\n );\n const collected = await collectResources(context.repoRoot, plugins, {\n agents: false,\n mcp: false,\n sharedSkills: false,\n temporaryDirectory,\n });\n for (const skill of collected.skillSources) {\n resources.push({\n name: skill.name,\n description: skill.description,\n path: skill.path,\n kind: 'skill',\n when: { domain, attribution: { kind: 'domain', mode: domain } },\n read: async () => getOrThrow(await fs.readTextFile(skill.path, BACKGROUND_CONTEXT)),\n });\n }\n } catch (error) {\n await context.client.notify({\n title: `Po domain ${domain} unavailable`,\n body: error instanceof Error ? error.message : String(error),\n level: 'warning',\n });\n } finally {\n await removePath(fs, temporaryDirectory, BACKGROUND_CONTEXT);\n }\n }\n return resources;\n}\n","import { resolvePluginEntriesAsync } from '@agimon-ai/po-config/domains';\nimport { loadHarnessStateAsync } from '@agimon-ai/po-config/harnessStore';\nimport { defineRoot } from '@agimon-ai/po-core/extensionFile';\nimport {\n PO_MCP_PROJECTION_RESOLVER_SERVICE,\n type PoMcpProjectionResolverService,\n} from '@agimon-ai/po-core/mcpProjection';\nimport {\n BACKGROUND_CONTEXT,\n getOrThrow,\n nodeHost,\n removePath,\n requirePoFs,\n withAbortSignal,\n} from '@agimon-ai/po-core/platform';\nimport type { PoServerPluginContext } from '@agimon-ai/po-core/serverPlugin';\nimport type { Context } from '@deepseek-ai/cordis';\n\nimport { resolveMcpAllowlistAsync } from '../../../../services/mcpFilter';\nimport { materializePluginEntries } from '../../../../services/pluginMaterializer';\nimport { stageMcpResources } from '../../../../services/resourceCollector';\nimport { domainServerResources } from './_lib/domainServerResources';\nimport type { DomainServerScope } from './_lib/serverScope';\n\nexport default defineRoot(async ({ agent, context: root, signal }: PoServerPluginContext) => {\n const services: Array<(cordis: Context) => void> = [];\n if (!agent) return { value: { resources: [] } satisfies DomainServerScope, services };\n const fs = requirePoFs(root);\n const io = withAbortSignal(signal, BACKGROUND_CONTEXT);\n const execution = agent.context;\n const home = execution.environment.HOME ?? nodeHost.homeDirectory();\n const resolver: PoMcpProjectionResolverService = {\n async resolve(domains) {\n const { state } = await loadHarnessStateAsync(fs, { ...execution.environment }, io);\n const directory = getOrThrow(await fs.createTempDir('po-domain-mcp-', io));\n try {\n const plugins = await materializePluginEntries(\n await resolvePluginEntriesAsync(fs, execution.repoRoot, [...domains], [...state.pluginDirectories], io, home),\n );\n const staged = await stageMcpResources(execution.repoRoot, plugins, {\n enabled: true,\n temporaryDirectory: directory,\n mcpAllowlist: await resolveMcpAllowlistAsync(fs, execution.repoRoot, [...domains], io),\n });\n return {\n projection: staged.mcpProjection,\n cleanup: () => removePath(fs, directory, BACKGROUND_CONTEXT),\n };\n } catch (error) {\n await removePath(fs, directory, BACKGROUND_CONTEXT);\n throw error;\n }\n },\n };\n services.push((cordis) => {\n cordis.plugin((provider) => {\n provider.provide(PO_MCP_PROJECTION_RESOLVER_SERVICE, resolver);\n });\n });\n return {\n value: { resources: await domainServerResources(agent.context, fs, io) } satisfies DomainServerScope,\n services,\n };\n});\n","import { listDomainNamesAsync } from '@agimon-ai/po-config/domains';\nimport { type PoHeadlessCommand, type PoHeadlessHostService } from '@agimon-ai/po-core/headless';\nimport { BACKGROUND_CONTEXT, type FileSystem } from '@agimon-ai/po-core/platform';\nimport { PO_RESOURCE_CATALOG_ENTRY_TYPE, type ResourceCatalogProjection } from '@agimon-ai/po-core/skills';\n\nimport {\n DOMAIN_COMMAND,\n domainToggleOptions,\n normalizeDomainNames,\n pickerTitle,\n splitDomains,\n toggledDomains,\n toggleOptionDomain,\n} from '../../../../../services/domainText';\n\nconst DOMAIN_SELECTION_KIND = 'po-domains-selection';\nconst DOMAIN_SELECTION_VERSION = 1;\n\n/** Full-set web replies share the string transport with legacy single-toggle labels. */\nfunction domainSelectionReply(answer: string): string[] | null {\n if (!answer.trimStart().startsWith('{')) return null;\n const reply: unknown = JSON.parse(answer);\n if (\n typeof reply !== 'object' ||\n reply === null ||\n !('kind' in reply) ||\n reply.kind !== DOMAIN_SELECTION_KIND ||\n !('version' in reply) ||\n reply.version !== DOMAIN_SELECTION_VERSION ||\n !('domains' in reply) ||\n !Array.isArray(reply.domains) ||\n !reply.domains.every((name: unknown): name is string => typeof name === 'string')\n ) {\n throw new Error('Invalid domains selection reply');\n }\n return reply.domains;\n}\n\nexport function createDomainServerCommand(host: PoHeadlessHostService, fs: FileSystem): PoHeadlessCommand {\n return {\n name: DOMAIN_COMMAND,\n description: 'Show or change the active Po domains.',\n async execute(args, execution) {\n const available = await listDomainNamesAsync(fs, execution.repoRoot, BACKGROUND_CONTEXT);\n let requested = splitDomains(args);\n let fullSet = false;\n if (requested.length === 0) {\n const listing = {\n active: [...execution.selection.domains],\n effective: [...execution.selection.domains],\n available,\n };\n const selected = await execution.client.request({\n kind: 'select',\n title: pickerTitle(listing),\n options: domainToggleOptions(listing).map((label) => ({ label, value: label })),\n });\n if (typeof selected !== 'string' || !selected) return;\n const domains = domainSelectionReply(selected);\n fullSet = domains !== null;\n requested = domains ?? toggledDomains(listing.effective, toggleOptionDomain(selected));\n }\n requested = normalizeDomainNames(requested);\n const unknown = requested.filter((name) => !available.includes(name));\n if (unknown.length > 0) throw new Error(`Unknown domain: ${unknown.join(', ')}`);\n if (fullSet) {\n const wanted = new Set(requested);\n const current = new Set(execution.selection.domains);\n requested = [\n ...execution.selection.domains.filter((name) => wanted.has(name)),\n ...available.filter((name) => wanted.has(name) && !current.has(name)),\n ];\n }\n if (\n requested.length === execution.selection.domains.length &&\n requested.every((name, index) => name === execution.selection.domains[index])\n ) {\n return;\n }\n await host.changeSelection({ axis: 'domains', domains: requested });\n // The web composer caches get_commands for `$` completion. Signal only after\n // the headless host has reconciled commands so the re-read sees this selection.\n const projection: ResourceCatalogProjection = { version: 1, revision: Date.now() };\n await execution.session.appendCustomEntry(PO_RESOURCE_CATALOG_ENTRY_TYPE, projection);\n },\n };\n}\n","import { defineRoutedContribution } from '@agimon-ai/po-core/extensionFile';\nimport { requirePoFs } from '@agimon-ai/po-core/platform';\nimport type { PoServerPluginContext } from '@agimon-ai/po-core/serverPlugin';\n\nimport { createDomainServerCommand } from '../_lib/domainServerCommand';\nexport default defineRoutedContribution(\n ({ agent, context }: PoServerPluginContext) =>\n agent ? createDomainServerCommand(agent, requirePoFs(context)) : undefined,\n { cardinality: 'optional' },\n);\n","import { defineRoutedContribution } from '@agimon-ai/po-core/extensionFile';\nimport type { WithRoot } from '@agimon-ai/po-core/extensionFile';\nimport type { PoServerPluginContext } from '@agimon-ai/po-core/serverPlugin';\n\nimport type { DomainServerScope } from '../_lib/serverScope';\n\nexport default defineRoutedContribution(\n (context: WithRoot<PoServerPluginContext, DomainServerScope>) => context.root.resources,\n { cardinality: 'many' },\n);\n","import { defineResource } from '@agimon-ai/po-core/extensionFile';\nimport { packageResourcePath, readPackageResource } from '@agimon-ai/po-core/serverPlugin';\n\nexport default defineResource({\n name: 'po-author-domain',\n description:\n 'Configure Po plugin catalogs and domain resource selections in domains.yaml. Use when creating or editing .po/domains.yaml or ~/.po/domains.yaml, choosing local, Git, or npm plugins, filtering plugin resources, setting aliases or defaults, or verifying resolved domain composition.',\n when: { state: { 'minor-mode': 'help' }, attribution: { kind: 'minor' as const, mode: 'help' } },\n kind: 'skill' as const,\n path: packageResourcePath(import.meta.url, 'src/prompts/po-author-domain/SKILL.md'),\n read: () => readPackageResource(import.meta.url, 'src/prompts/po-author-domain/SKILL.md'),\n});\n","// Generated by @agimon-ai/po-build. Do not edit by hand.\nimport { defineServerPlugin, type PoServerSessionPlugin } from '@agimon-ai/po-core/serverPlugin';\nimport { composeServerProviderOverrides } from '@agimon-ai/po-core/serverPlugin';\nimport { composeRootHooks, composeRootInjects } from '@agimon-ai/po-core/extensionFile';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.server';\nimport commandDomains from '../src/extensions/workspaces/sessions/(backend)/command/domains.server';\nimport resourceDomains from '../src/extensions/workspaces/sessions/(backend)/resource/domains.server';\nimport resourcePoAuthorDomain from '../src/extensions/workspaces/sessions/(backend)/resource/poAuthorDomain.server';\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\ntype ManyFactory<T, C> = (context: C) => T | readonly T[];\nconst many = <T, C>(value: T | readonly T[] | ManyFactory<T, C>, context: C): readonly T[] => {\n const resolved = typeof value === 'function' ? (value as ManyFactory<T, C>)(context) : value;\n return Array.isArray(resolved) ? resolved : [resolved as T];\n};\n/* v8 ignore next -- generated normalization branch */\nconst defined = <T>(values: readonly (T | undefined)[]): T[] =>\n values.filter((value): value is T => value !== undefined);\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T =>\n (value === undefined ? undefined : { ...identity, ...(value as object) }) as T;\n\nexport const serverPlugin = defineServerPlugin({\n name: '@agimon-ai/po-domain',\n providerOverrides: composeServerProviderOverrides(rootSession),\n injects: composeRootInjects({ session: [rootSession] }),\n session: async (context) => {\n const scopeSession = await context.scopeRoot('session', rootSession, context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n get commands(): PoServerSessionPlugin['commands'] { return defined([via({ name: 'domains' }, at(commandDomains, contextSession))]); },\n get resources(): PoServerSessionPlugin['resources'] { return [...many(resourceDomains, contextSession), at(resourcePoAuthorDomain, contextSession)]; },\n services: [...(scopeSession.services ?? [])],\n get activities(): PoServerSessionPlugin['activities'] { return [...(scopeSession.activities ?? [])]; },\n };\n },\n});\n\nexport default serverPlugin;\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  //#region generated/server.d.ts
2
- export declare const facet: import("@agimon-ai/po-core/serverFacet").PoServerFacet;
2
+ export declare const serverPlugin: import("@agimon-ai/po-core/serverPlugin").PoServerPlugin;
3
3
  //#endregion
4
- export { facet as default };
4
+ export { serverPlugin as default };
5
5
  //# sourceMappingURL=server.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.mts","names":[],"sources":["../../generated/server.ts"],"mappings":";qBAwBa,gDAAK"}
1
+ {"version":3,"file":"server.d.mts","names":[],"sources":["../../generated/server.ts"],"mappings":";qBAwBa,wDAAY"}
@@ -5,8 +5,8 @@ import { d as splitDomains, l as normalizeDomainNames, m as toggledDomains, p as
5
5
  import { listDomainNamesAsync, resolvePluginEntriesAsync } from "@agimon-ai/po-config/domains";
6
6
  import { loadHarnessStateAsync } from "@agimon-ai/po-config/harnessStore";
7
7
  import { PO_MCP_PROJECTION_RESOLVER_SERVICE } from "@agimon-ai/po-core/mcpProjection";
8
- import { composeServerProviderOverrides, defineServerPlugin, packageResourcePath, readPackageResource } from "@agimon-ai/po-core/serverFacet";
9
- import { composeRootHooks, defineResource, defineRoot, defineRoutedContribution } from "@agimon-ai/po-core/extensionFile";
8
+ import { composeServerProviderOverrides, defineServerPlugin, packageResourcePath, readPackageResource } from "@agimon-ai/po-core/serverPlugin";
9
+ import { composeRootHooks, composeRootInjects, defineResource, defineRoot, defineRoutedContribution } from "@agimon-ai/po-core/extensionFile";
10
10
  import { BACKGROUND_CONTEXT, getOrThrow, nodeHost, removePath, requirePoFs, withAbortSignal } from "@agimon-ai/po-core/platform";
11
11
  import { PO_RESOURCE_CATALOG_ENTRY_TYPE } from "@agimon-ai/po-core/skills";
12
12
  //#region src/extensions/workspaces/sessions/(backend)/_lib/domainServerResources.ts
@@ -184,11 +184,12 @@ const via = (identity, value) => value === void 0 ? void 0 : {
184
184
  ...identity,
185
185
  ...value
186
186
  };
187
- const facet = defineServerPlugin({
187
+ const serverPlugin = defineServerPlugin({
188
188
  name: "@agimon-ai/po-domain",
189
189
  providerOverrides: composeServerProviderOverrides(root_server_default),
190
+ injects: composeRootInjects({ session: [root_server_default] }),
190
191
  session: async (context) => {
191
- const scopeSession = await root_server_default(context);
192
+ const scopeSession = await context.scopeRoot("session", root_server_default, context);
192
193
  const contextSession = {
193
194
  ...context,
194
195
  root: scopeSession.value
@@ -209,6 +210,6 @@ const facet = defineServerPlugin({
209
210
  }
210
211
  });
211
212
  //#endregion
212
- export { facet as default, facet };
213
+ export { serverPlugin as default, serverPlugin };
213
214
 
214
215
  //# sourceMappingURL=server.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.mjs","names":["rootSession","commandDomains","resourceDomains","resourcePoAuthorDomain"],"sources":["../../src/extensions/workspaces/sessions/(backend)/_lib/domainServerResources.ts","../../src/extensions/workspaces/sessions/(backend)/root.server.ts","../../src/extensions/workspaces/sessions/(backend)/_lib/domainServerCommand.ts","../../src/extensions/workspaces/sessions/(backend)/command/domains.server.ts","../../src/extensions/workspaces/sessions/(backend)/resource/domains.server.ts","../../src/extensions/workspaces/sessions/(backend)/resource/poAuthorDomain.server.ts","../../generated/server.ts"],"sourcesContent":["import { listDomainNamesAsync, resolvePluginEntriesAsync } from '@agimon-ai/po-config/domains';\nimport type { PoHeadlessExecutionContext, PoHeadlessResource } from '@agimon-ai/po-core/headless';\nimport { BACKGROUND_CONTEXT, getOrThrow, nodeHost, removePath, type FileSystem } from '@agimon-ai/po-core/platform';\n\nimport { materializePluginEntries } from '../../../../../services/pluginMaterializer';\nimport { collectResources } from '../../../../../services/resourceCollector';\n\ntype IoContext = Parameters<FileSystem['readTextFile']>[1];\n\n/** Retain valid domains behind selection conditions; a broken neighbor must not prevent startup. */\nexport async function domainServerResources(\n context: PoHeadlessExecutionContext,\n fs: FileSystem,\n io: IoContext,\n): Promise<PoHeadlessResource[]> {\n const resources: PoHeadlessResource[] = [];\n const home = context.environment.HOME ?? nodeHost.homeDirectory();\n for (const domain of await listDomainNamesAsync(fs, context.repoRoot, io, home)) {\n // Own staging here so collection failures also release their temporary files.\n const temporaryDirectory = getOrThrow(await fs.createTempDir('po-domain-', io));\n try {\n const plugins = await materializePluginEntries(\n await resolvePluginEntriesAsync(fs, context.repoRoot, [domain], [], io, home),\n );\n const collected = await collectResources(context.repoRoot, plugins, {\n agents: false,\n mcp: false,\n sharedSkills: false,\n temporaryDirectory,\n });\n for (const skill of collected.skillSources) {\n resources.push({\n name: skill.name,\n description: skill.description,\n path: skill.path,\n kind: 'skill',\n when: { domain, attribution: { kind: 'domain', mode: domain } },\n read: async () => getOrThrow(await fs.readTextFile(skill.path, BACKGROUND_CONTEXT)),\n });\n }\n } catch (error) {\n await context.client.notify({\n title: `Po domain ${domain} unavailable`,\n body: error instanceof Error ? error.message : String(error),\n level: 'warning',\n });\n } finally {\n await removePath(fs, temporaryDirectory, BACKGROUND_CONTEXT);\n }\n }\n return resources;\n}\n","import { resolvePluginEntriesAsync } from '@agimon-ai/po-config/domains';\nimport { loadHarnessStateAsync } from '@agimon-ai/po-config/harnessStore';\nimport { defineRoot } from '@agimon-ai/po-core/extensionFile';\nimport {\n PO_MCP_PROJECTION_RESOLVER_SERVICE,\n type PoMcpProjectionResolverService,\n} from '@agimon-ai/po-core/mcpProjection';\nimport {\n BACKGROUND_CONTEXT,\n getOrThrow,\n nodeHost,\n removePath,\n requirePoFs,\n withAbortSignal,\n} from '@agimon-ai/po-core/platform';\nimport type { PoServerPluginContext } from '@agimon-ai/po-core/serverFacet';\nimport type { Context } from '@deepseek-ai/cordis';\n\nimport { resolveMcpAllowlistAsync } from '../../../../services/mcpFilter';\nimport { materializePluginEntries } from '../../../../services/pluginMaterializer';\nimport { stageMcpResources } from '../../../../services/resourceCollector';\nimport { domainServerResources } from './_lib/domainServerResources';\nimport type { DomainServerScope } from './_lib/serverScope';\n\nexport default defineRoot(async ({ agent, context: root, signal }: PoServerPluginContext) => {\n const services: Array<(cordis: Context) => void> = [];\n if (!agent) return { value: { resources: [] } satisfies DomainServerScope, services };\n const fs = requirePoFs(root);\n const io = withAbortSignal(signal, BACKGROUND_CONTEXT);\n const execution = agent.context;\n const home = execution.environment.HOME ?? nodeHost.homeDirectory();\n const resolver: PoMcpProjectionResolverService = {\n async resolve(domains) {\n const { state } = await loadHarnessStateAsync(fs, { ...execution.environment }, io);\n const directory = getOrThrow(await fs.createTempDir('po-domain-mcp-', io));\n try {\n const plugins = await materializePluginEntries(\n await resolvePluginEntriesAsync(fs, execution.repoRoot, [...domains], [...state.pluginDirectories], io, home),\n );\n const staged = await stageMcpResources(execution.repoRoot, plugins, {\n enabled: true,\n temporaryDirectory: directory,\n mcpAllowlist: await resolveMcpAllowlistAsync(fs, execution.repoRoot, [...domains], io),\n });\n return {\n projection: staged.mcpProjection,\n cleanup: () => removePath(fs, directory, BACKGROUND_CONTEXT),\n };\n } catch (error) {\n await removePath(fs, directory, BACKGROUND_CONTEXT);\n throw error;\n }\n },\n };\n services.push((cordis) => {\n cordis.plugin((provider) => {\n provider.provide(PO_MCP_PROJECTION_RESOLVER_SERVICE, resolver);\n });\n });\n return {\n value: { resources: await domainServerResources(agent.context, fs, io) } satisfies DomainServerScope,\n services,\n };\n});\n","import { listDomainNamesAsync } from '@agimon-ai/po-config/domains';\nimport { type PoHeadlessCommand, type PoHeadlessHostService } from '@agimon-ai/po-core/headless';\nimport { BACKGROUND_CONTEXT, type FileSystem } from '@agimon-ai/po-core/platform';\nimport { PO_RESOURCE_CATALOG_ENTRY_TYPE, type ResourceCatalogProjection } from '@agimon-ai/po-core/skills';\n\nimport {\n DOMAIN_COMMAND,\n domainToggleOptions,\n normalizeDomainNames,\n pickerTitle,\n splitDomains,\n toggledDomains,\n toggleOptionDomain,\n} from '../../../../../services/domainText';\n\nconst DOMAIN_SELECTION_KIND = 'po-domains-selection';\nconst DOMAIN_SELECTION_VERSION = 1;\n\n/** Full-set web replies share the string transport with legacy single-toggle labels. */\nfunction domainSelectionReply(answer: string): string[] | null {\n if (!answer.trimStart().startsWith('{')) return null;\n const reply: unknown = JSON.parse(answer);\n if (\n typeof reply !== 'object' ||\n reply === null ||\n !('kind' in reply) ||\n reply.kind !== DOMAIN_SELECTION_KIND ||\n !('version' in reply) ||\n reply.version !== DOMAIN_SELECTION_VERSION ||\n !('domains' in reply) ||\n !Array.isArray(reply.domains) ||\n !reply.domains.every((name: unknown): name is string => typeof name === 'string')\n ) {\n throw new Error('Invalid domains selection reply');\n }\n return reply.domains;\n}\n\nexport function createDomainServerCommand(host: PoHeadlessHostService, fs: FileSystem): PoHeadlessCommand {\n return {\n name: DOMAIN_COMMAND,\n description: 'Show or change the active Po domains.',\n async execute(args, execution) {\n const available = await listDomainNamesAsync(fs, execution.repoRoot, BACKGROUND_CONTEXT);\n let requested = splitDomains(args);\n let fullSet = false;\n if (requested.length === 0) {\n const listing = {\n active: [...execution.selection.domains],\n effective: [...execution.selection.domains],\n available,\n };\n const selected = await execution.client.request({\n kind: 'select',\n title: pickerTitle(listing),\n options: domainToggleOptions(listing).map((label) => ({ label, value: label })),\n });\n if (typeof selected !== 'string' || !selected) return;\n const domains = domainSelectionReply(selected);\n fullSet = domains !== null;\n requested = domains ?? toggledDomains(listing.effective, toggleOptionDomain(selected));\n }\n requested = normalizeDomainNames(requested);\n const unknown = requested.filter((name) => !available.includes(name));\n if (unknown.length > 0) throw new Error(`Unknown domain: ${unknown.join(', ')}`);\n if (fullSet) {\n const wanted = new Set(requested);\n const current = new Set(execution.selection.domains);\n requested = [\n ...execution.selection.domains.filter((name) => wanted.has(name)),\n ...available.filter((name) => wanted.has(name) && !current.has(name)),\n ];\n }\n if (\n requested.length === execution.selection.domains.length &&\n requested.every((name, index) => name === execution.selection.domains[index])\n ) {\n return;\n }\n await host.changeSelection({ axis: 'domains', domains: requested });\n // The web composer caches get_commands for `$` completion. Signal only after\n // the headless host has reconciled commands so the re-read sees this selection.\n const projection: ResourceCatalogProjection = { version: 1, revision: Date.now() };\n await execution.session.appendCustomEntry(PO_RESOURCE_CATALOG_ENTRY_TYPE, projection);\n },\n };\n}\n","import { defineRoutedContribution } from '@agimon-ai/po-core/extensionFile';\nimport { requirePoFs } from '@agimon-ai/po-core/platform';\nimport type { PoServerPluginContext } from '@agimon-ai/po-core/serverFacet';\n\nimport { createDomainServerCommand } from '../_lib/domainServerCommand';\nexport default defineRoutedContribution(\n ({ agent, context }: PoServerPluginContext) =>\n agent ? createDomainServerCommand(agent, requirePoFs(context)) : undefined,\n { cardinality: 'optional' },\n);\n","import { defineRoutedContribution } from '@agimon-ai/po-core/extensionFile';\nimport type { WithRoot } from '@agimon-ai/po-core/extensionFile';\nimport type { PoServerPluginContext } from '@agimon-ai/po-core/serverFacet';\n\nimport type { DomainServerScope } from '../_lib/serverScope';\n\nexport default defineRoutedContribution(\n (context: WithRoot<PoServerPluginContext, DomainServerScope>) => context.root.resources,\n { cardinality: 'many' },\n);\n","import { defineResource } from '@agimon-ai/po-core/extensionFile';\nimport { packageResourcePath, readPackageResource } from '@agimon-ai/po-core/serverFacet';\n\nexport default defineResource({\n name: 'po-author-domain',\n description:\n 'Configure Po plugin catalogs and domain resource selections in domains.yaml. Use when creating or editing .po/domains.yaml or ~/.po/domains.yaml, choosing local, Git, or npm plugins, filtering plugin resources, setting aliases or defaults, or verifying resolved domain composition.',\n when: { state: { 'minor-mode': 'help' }, attribution: { kind: 'minor' as const, mode: 'help' } },\n kind: 'skill' as const,\n path: packageResourcePath(import.meta.url, 'src/prompts/po-author-domain/SKILL.md'),\n read: () => readPackageResource(import.meta.url, 'src/prompts/po-author-domain/SKILL.md'),\n});\n","// Generated by @agimon-ai/po-build. Do not edit by hand.\nimport { defineServerPlugin, type PoServerSessionPlugin } from '@agimon-ai/po-core/serverFacet';\nimport { composeServerProviderOverrides } from '@agimon-ai/po-core/serverFacet';\nimport { composeRootHooks } from '@agimon-ai/po-core/extensionFile';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.server';\nimport commandDomains from '../src/extensions/workspaces/sessions/(backend)/command/domains.server';\nimport resourceDomains from '../src/extensions/workspaces/sessions/(backend)/resource/domains.server';\nimport resourcePoAuthorDomain from '../src/extensions/workspaces/sessions/(backend)/resource/poAuthorDomain.server';\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\ntype ManyFactory<T, C> = (context: C) => T | readonly T[];\nconst many = <T, C>(value: T | readonly T[] | ManyFactory<T, C>, context: C): readonly T[] => {\n const resolved = typeof value === 'function' ? (value as ManyFactory<T, C>)(context) : value;\n return Array.isArray(resolved) ? resolved : [resolved as T];\n};\n/* v8 ignore next -- generated normalization branch */\nconst defined = <T>(values: readonly (T | undefined)[]): T[] =>\n values.filter((value): value is T => value !== undefined);\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T =>\n (value === undefined ? undefined : { ...identity, ...(value as object) }) as T;\n\nexport const facet = defineServerPlugin({\n name: '@agimon-ai/po-domain',\n providerOverrides: composeServerProviderOverrides(rootSession),\n session: async (context) => {\n const scopeSession = await rootSession(context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n get commands(): PoServerSessionPlugin['commands'] { return defined([via({ name: 'domains' }, at(commandDomains, contextSession))]); },\n get resources(): PoServerSessionPlugin['resources'] { return [...many(resourceDomains, contextSession), at(resourcePoAuthorDomain, contextSession)]; },\n services: [...(scopeSession.services ?? [])],\n get activities(): PoServerSessionPlugin['activities'] { return [...(scopeSession.activities ?? [])]; },\n };\n },\n});\n\nexport default facet;\n"],"mappings":"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"}
1
+ {"version":3,"file":"server.mjs","names":["rootSession","commandDomains","resourceDomains","resourcePoAuthorDomain"],"sources":["../../src/extensions/workspaces/sessions/(backend)/_lib/domainServerResources.ts","../../src/extensions/workspaces/sessions/(backend)/root.server.ts","../../src/extensions/workspaces/sessions/(backend)/_lib/domainServerCommand.ts","../../src/extensions/workspaces/sessions/(backend)/command/domains.server.ts","../../src/extensions/workspaces/sessions/(backend)/resource/domains.server.ts","../../src/extensions/workspaces/sessions/(backend)/resource/poAuthorDomain.server.ts","../../generated/server.ts"],"sourcesContent":["import { listDomainNamesAsync, resolvePluginEntriesAsync } from '@agimon-ai/po-config/domains';\nimport type { PoHeadlessExecutionContext, PoHeadlessResource } from '@agimon-ai/po-core/headless';\nimport { BACKGROUND_CONTEXT, getOrThrow, nodeHost, removePath, type FileSystem } from '@agimon-ai/po-core/platform';\n\nimport { materializePluginEntries } from '../../../../../services/pluginMaterializer';\nimport { collectResources } from '../../../../../services/resourceCollector';\n\ntype IoContext = Parameters<FileSystem['readTextFile']>[1];\n\n/** Retain valid domains behind selection conditions; a broken neighbor must not prevent startup. */\nexport async function domainServerResources(\n context: PoHeadlessExecutionContext,\n fs: FileSystem,\n io: IoContext,\n): Promise<PoHeadlessResource[]> {\n const resources: PoHeadlessResource[] = [];\n const home = context.environment.HOME ?? nodeHost.homeDirectory();\n for (const domain of await listDomainNamesAsync(fs, context.repoRoot, io, home)) {\n // Own staging here so collection failures also release their temporary files.\n const temporaryDirectory = getOrThrow(await fs.createTempDir('po-domain-', io));\n try {\n const plugins = await materializePluginEntries(\n await resolvePluginEntriesAsync(fs, context.repoRoot, [domain], [], io, home),\n );\n const collected = await collectResources(context.repoRoot, plugins, {\n agents: false,\n mcp: false,\n sharedSkills: false,\n temporaryDirectory,\n });\n for (const skill of collected.skillSources) {\n resources.push({\n name: skill.name,\n description: skill.description,\n path: skill.path,\n kind: 'skill',\n when: { domain, attribution: { kind: 'domain', mode: domain } },\n read: async () => getOrThrow(await fs.readTextFile(skill.path, BACKGROUND_CONTEXT)),\n });\n }\n } catch (error) {\n await context.client.notify({\n title: `Po domain ${domain} unavailable`,\n body: error instanceof Error ? error.message : String(error),\n level: 'warning',\n });\n } finally {\n await removePath(fs, temporaryDirectory, BACKGROUND_CONTEXT);\n }\n }\n return resources;\n}\n","import { resolvePluginEntriesAsync } from '@agimon-ai/po-config/domains';\nimport { loadHarnessStateAsync } from '@agimon-ai/po-config/harnessStore';\nimport { defineRoot } from '@agimon-ai/po-core/extensionFile';\nimport {\n PO_MCP_PROJECTION_RESOLVER_SERVICE,\n type PoMcpProjectionResolverService,\n} from '@agimon-ai/po-core/mcpProjection';\nimport {\n BACKGROUND_CONTEXT,\n getOrThrow,\n nodeHost,\n removePath,\n requirePoFs,\n withAbortSignal,\n} from '@agimon-ai/po-core/platform';\nimport type { PoServerPluginContext } from '@agimon-ai/po-core/serverPlugin';\nimport type { Context } from '@deepseek-ai/cordis';\n\nimport { resolveMcpAllowlistAsync } from '../../../../services/mcpFilter';\nimport { materializePluginEntries } from '../../../../services/pluginMaterializer';\nimport { stageMcpResources } from '../../../../services/resourceCollector';\nimport { domainServerResources } from './_lib/domainServerResources';\nimport type { DomainServerScope } from './_lib/serverScope';\n\nexport default defineRoot(async ({ agent, context: root, signal }: PoServerPluginContext) => {\n const services: Array<(cordis: Context) => void> = [];\n if (!agent) return { value: { resources: [] } satisfies DomainServerScope, services };\n const fs = requirePoFs(root);\n const io = withAbortSignal(signal, BACKGROUND_CONTEXT);\n const execution = agent.context;\n const home = execution.environment.HOME ?? nodeHost.homeDirectory();\n const resolver: PoMcpProjectionResolverService = {\n async resolve(domains) {\n const { state } = await loadHarnessStateAsync(fs, { ...execution.environment }, io);\n const directory = getOrThrow(await fs.createTempDir('po-domain-mcp-', io));\n try {\n const plugins = await materializePluginEntries(\n await resolvePluginEntriesAsync(fs, execution.repoRoot, [...domains], [...state.pluginDirectories], io, home),\n );\n const staged = await stageMcpResources(execution.repoRoot, plugins, {\n enabled: true,\n temporaryDirectory: directory,\n mcpAllowlist: await resolveMcpAllowlistAsync(fs, execution.repoRoot, [...domains], io),\n });\n return {\n projection: staged.mcpProjection,\n cleanup: () => removePath(fs, directory, BACKGROUND_CONTEXT),\n };\n } catch (error) {\n await removePath(fs, directory, BACKGROUND_CONTEXT);\n throw error;\n }\n },\n };\n services.push((cordis) => {\n cordis.plugin((provider) => {\n provider.provide(PO_MCP_PROJECTION_RESOLVER_SERVICE, resolver);\n });\n });\n return {\n value: { resources: await domainServerResources(agent.context, fs, io) } satisfies DomainServerScope,\n services,\n };\n});\n","import { listDomainNamesAsync } from '@agimon-ai/po-config/domains';\nimport { type PoHeadlessCommand, type PoHeadlessHostService } from '@agimon-ai/po-core/headless';\nimport { BACKGROUND_CONTEXT, type FileSystem } from '@agimon-ai/po-core/platform';\nimport { PO_RESOURCE_CATALOG_ENTRY_TYPE, type ResourceCatalogProjection } from '@agimon-ai/po-core/skills';\n\nimport {\n DOMAIN_COMMAND,\n domainToggleOptions,\n normalizeDomainNames,\n pickerTitle,\n splitDomains,\n toggledDomains,\n toggleOptionDomain,\n} from '../../../../../services/domainText';\n\nconst DOMAIN_SELECTION_KIND = 'po-domains-selection';\nconst DOMAIN_SELECTION_VERSION = 1;\n\n/** Full-set web replies share the string transport with legacy single-toggle labels. */\nfunction domainSelectionReply(answer: string): string[] | null {\n if (!answer.trimStart().startsWith('{')) return null;\n const reply: unknown = JSON.parse(answer);\n if (\n typeof reply !== 'object' ||\n reply === null ||\n !('kind' in reply) ||\n reply.kind !== DOMAIN_SELECTION_KIND ||\n !('version' in reply) ||\n reply.version !== DOMAIN_SELECTION_VERSION ||\n !('domains' in reply) ||\n !Array.isArray(reply.domains) ||\n !reply.domains.every((name: unknown): name is string => typeof name === 'string')\n ) {\n throw new Error('Invalid domains selection reply');\n }\n return reply.domains;\n}\n\nexport function createDomainServerCommand(host: PoHeadlessHostService, fs: FileSystem): PoHeadlessCommand {\n return {\n name: DOMAIN_COMMAND,\n description: 'Show or change the active Po domains.',\n async execute(args, execution) {\n const available = await listDomainNamesAsync(fs, execution.repoRoot, BACKGROUND_CONTEXT);\n let requested = splitDomains(args);\n let fullSet = false;\n if (requested.length === 0) {\n const listing = {\n active: [...execution.selection.domains],\n effective: [...execution.selection.domains],\n available,\n };\n const selected = await execution.client.request({\n kind: 'select',\n title: pickerTitle(listing),\n options: domainToggleOptions(listing).map((label) => ({ label, value: label })),\n });\n if (typeof selected !== 'string' || !selected) return;\n const domains = domainSelectionReply(selected);\n fullSet = domains !== null;\n requested = domains ?? toggledDomains(listing.effective, toggleOptionDomain(selected));\n }\n requested = normalizeDomainNames(requested);\n const unknown = requested.filter((name) => !available.includes(name));\n if (unknown.length > 0) throw new Error(`Unknown domain: ${unknown.join(', ')}`);\n if (fullSet) {\n const wanted = new Set(requested);\n const current = new Set(execution.selection.domains);\n requested = [\n ...execution.selection.domains.filter((name) => wanted.has(name)),\n ...available.filter((name) => wanted.has(name) && !current.has(name)),\n ];\n }\n if (\n requested.length === execution.selection.domains.length &&\n requested.every((name, index) => name === execution.selection.domains[index])\n ) {\n return;\n }\n await host.changeSelection({ axis: 'domains', domains: requested });\n // The web composer caches get_commands for `$` completion. Signal only after\n // the headless host has reconciled commands so the re-read sees this selection.\n const projection: ResourceCatalogProjection = { version: 1, revision: Date.now() };\n await execution.session.appendCustomEntry(PO_RESOURCE_CATALOG_ENTRY_TYPE, projection);\n },\n };\n}\n","import { defineRoutedContribution } from '@agimon-ai/po-core/extensionFile';\nimport { requirePoFs } from '@agimon-ai/po-core/platform';\nimport type { PoServerPluginContext } from '@agimon-ai/po-core/serverPlugin';\n\nimport { createDomainServerCommand } from '../_lib/domainServerCommand';\nexport default defineRoutedContribution(\n ({ agent, context }: PoServerPluginContext) =>\n agent ? createDomainServerCommand(agent, requirePoFs(context)) : undefined,\n { cardinality: 'optional' },\n);\n","import { defineRoutedContribution } from '@agimon-ai/po-core/extensionFile';\nimport type { WithRoot } from '@agimon-ai/po-core/extensionFile';\nimport type { PoServerPluginContext } from '@agimon-ai/po-core/serverPlugin';\n\nimport type { DomainServerScope } from '../_lib/serverScope';\n\nexport default defineRoutedContribution(\n (context: WithRoot<PoServerPluginContext, DomainServerScope>) => context.root.resources,\n { cardinality: 'many' },\n);\n","import { defineResource } from '@agimon-ai/po-core/extensionFile';\nimport { packageResourcePath, readPackageResource } from '@agimon-ai/po-core/serverPlugin';\n\nexport default defineResource({\n name: 'po-author-domain',\n description:\n 'Configure Po plugin catalogs and domain resource selections in domains.yaml. Use when creating or editing .po/domains.yaml or ~/.po/domains.yaml, choosing local, Git, or npm plugins, filtering plugin resources, setting aliases or defaults, or verifying resolved domain composition.',\n when: { state: { 'minor-mode': 'help' }, attribution: { kind: 'minor' as const, mode: 'help' } },\n kind: 'skill' as const,\n path: packageResourcePath(import.meta.url, 'src/prompts/po-author-domain/SKILL.md'),\n read: () => readPackageResource(import.meta.url, 'src/prompts/po-author-domain/SKILL.md'),\n});\n","// Generated by @agimon-ai/po-build. Do not edit by hand.\nimport { defineServerPlugin, type PoServerSessionPlugin } from '@agimon-ai/po-core/serverPlugin';\nimport { composeServerProviderOverrides } from '@agimon-ai/po-core/serverPlugin';\nimport { composeRootHooks, composeRootInjects } from '@agimon-ai/po-core/extensionFile';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.server';\nimport commandDomains from '../src/extensions/workspaces/sessions/(backend)/command/domains.server';\nimport resourceDomains from '../src/extensions/workspaces/sessions/(backend)/resource/domains.server';\nimport resourcePoAuthorDomain from '../src/extensions/workspaces/sessions/(backend)/resource/poAuthorDomain.server';\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\ntype ManyFactory<T, C> = (context: C) => T | readonly T[];\nconst many = <T, C>(value: T | readonly T[] | ManyFactory<T, C>, context: C): readonly T[] => {\n const resolved = typeof value === 'function' ? (value as ManyFactory<T, C>)(context) : value;\n return Array.isArray(resolved) ? resolved : [resolved as T];\n};\n/* v8 ignore next -- generated normalization branch */\nconst defined = <T>(values: readonly (T | undefined)[]): T[] =>\n values.filter((value): value is T => value !== undefined);\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T =>\n (value === undefined ? undefined : { ...identity, ...(value as object) }) as T;\n\nexport const serverPlugin = defineServerPlugin({\n name: '@agimon-ai/po-domain',\n providerOverrides: composeServerProviderOverrides(rootSession),\n injects: composeRootInjects({ session: [rootSession] }),\n session: async (context) => {\n const scopeSession = await context.scopeRoot('session', rootSession, context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n get commands(): PoServerSessionPlugin['commands'] { return defined([via({ name: 'domains' }, at(commandDomains, contextSession))]); },\n get resources(): PoServerSessionPlugin['resources'] { return [...many(resourceDomains, contextSession), at(resourcePoAuthorDomain, contextSession)]; },\n services: [...(scopeSession.services ?? [])],\n get activities(): PoServerSessionPlugin['activities'] { return [...(scopeSession.activities ?? [])]; },\n };\n },\n});\n\nexport default serverPlugin;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agimon-ai/po-domain",
3
- "version": "0.0.0-alpha.13",
3
+ "version": "0.0.0-alpha.14",
4
4
  "description": "Domain selection, resource staging, and MCP scoping for Po sessions.",
5
5
  "keywords": [
6
6
  "ai",
@@ -88,20 +88,20 @@
88
88
  "access": "public"
89
89
  },
90
90
  "dependencies": {
91
- "@agimon-ai/po-config": "0.0.0-alpha.13",
92
- "@agimon-ai/po-core": "0.0.0-alpha.13",
93
- "@agimon-ai/po-minor-mode": "0.0.0-alpha.13",
94
- "@agimon-ai/po-telemetry": "0.0.0-alpha.13",
95
- "@deepseek-ai/cordis": "4.0.4",
91
+ "@agimon-ai/po-config": "0.0.0-alpha.14",
92
+ "@agimon-ai/po-core": "0.0.0-alpha.14",
93
+ "@agimon-ai/po-minor-mode": "0.0.0-alpha.14",
94
+ "@agimon-ai/po-telemetry": "0.0.0-alpha.14",
95
+ "@deepseek-ai/cordis": "4.0.5",
96
96
  "typebox": "1.3.37",
97
97
  "yaml": "2.9.1"
98
98
  },
99
99
  "devDependencies": {
100
- "@agimon-ai/po-build": "0.0.0-alpha.13",
101
- "@agimon-ai/po-core": "0.0.0-alpha.13",
102
- "@agimon-ai/po-voice": "0.0.0-alpha.13",
103
- "@agimon-ai/vibe-lint-plugin-po-extension": "0.0.0-alpha.13",
104
- "@deepseek-ai/cordis": "4.0.4",
100
+ "@agimon-ai/po-build": "0.0.0-alpha.14",
101
+ "@agimon-ai/po-core": "0.0.0-alpha.14",
102
+ "@agimon-ai/po-voice": "0.0.0-alpha.14",
103
+ "@agimon-ai/vibe-lint-plugin-po-extension": "0.0.0-alpha.14",
104
+ "@deepseek-ai/cordis": "4.0.5",
105
105
  "@earendil-works/pi-coding-agent": "1.3.0",
106
106
  "@types/node": "26.6.5",
107
107
  "@vitest/coverage-v8": "5.0.4",
@@ -110,7 +110,7 @@
110
110
  "vitest": "5.0.4"
111
111
  },
112
112
  "peerDependencies": {
113
- "@agimon-ai/po-core": "0.0.0-alpha.13",
113
+ "@agimon-ai/po-core": "0.0.0-alpha.14",
114
114
  "@earendil-works/pi-coding-agent": "1.3.0"
115
115
  },
116
116
  "peerDependenciesMeta": {