@agimon-ai/po-core 0.0.0-alpha.21 → 0.0.0-alpha.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/apiContracts.cjs +10 -0
- package/dist/apiContracts.cjs.map +1 -1
- package/dist/apiContracts.mjs +10 -0
- package/dist/apiContracts.mjs.map +1 -1
- package/dist/headlessServer.cjs +12 -84
- package/dist/headlessServer.cjs.map +1 -1
- package/dist/headlessServer.d.mts.map +1 -1
- package/dist/headlessServer.mjs +13 -85
- package/dist/headlessServer.mjs.map +1 -1
- package/dist/mcpProjection.cjs +1 -0
- package/dist/mcpProjection.d.mts +2 -2
- package/dist/mcpProjection.mjs +1 -1
- package/dist/native.cjs +0 -1
- package/dist/native.d.mts +3 -3
- package/dist/native.mjs +2 -2
- package/dist/packageApiServer.cjs +39 -4
- package/dist/packageApiServer.cjs.map +1 -1
- package/dist/packageApiServer.d.mts.map +1 -1
- package/dist/packageApiServer.mjs +34 -1
- package/dist/packageApiServer.mjs.map +1 -1
- package/dist/platform.cjs +3 -0
- package/dist/platform.d.mts +2 -1
- package/dist/platform.mjs +2 -1
- package/dist/src/constants/sessionFiles.cjs +3 -0
- package/dist/src/constants/sessionFiles.cjs.map +1 -1
- package/dist/src/constants/sessionFiles.mjs +3 -1
- package/dist/src/constants/sessionFiles.mjs.map +1 -1
- package/dist/src/schemas/httpApiContracts.cjs +10 -0
- package/dist/src/schemas/httpApiContracts.cjs.map +1 -1
- package/dist/src/schemas/httpApiContracts.d.mts.map +1 -1
- package/dist/src/schemas/httpApiContracts.mjs +10 -0
- package/dist/src/schemas/httpApiContracts.mjs.map +1 -1
- package/dist/src/schemas/mcpProjection.cjs +11 -1
- package/dist/src/schemas/mcpProjection.cjs.map +1 -1
- package/dist/src/schemas/mcpProjection.d.mts +8 -3
- package/dist/src/schemas/mcpProjection.d.mts.map +1 -1
- package/dist/src/schemas/mcpProjection.mjs +11 -2
- package/dist/src/schemas/mcpProjection.mjs.map +1 -1
- package/dist/src/schemas/mcpSession.d.mts +1 -1
- package/dist/src/services/fileAccess/accessibleFile.cjs +101 -0
- package/dist/src/services/fileAccess/accessibleFile.cjs.map +1 -0
- package/dist/src/services/fileAccess/accessibleFile.mjs +98 -0
- package/dist/src/services/fileAccess/accessibleFile.mjs.map +1 -0
- package/dist/src/services/fileAccess/index.cjs +34 -0
- package/dist/src/services/fileAccess/index.cjs.map +1 -0
- package/dist/src/services/fileAccess/index.d.mts +22 -0
- package/dist/src/services/fileAccess/index.d.mts.map +1 -0
- package/dist/src/services/fileAccess/index.mjs +29 -0
- package/dist/src/services/fileAccess/index.mjs.map +1 -0
- package/dist/src/web/types/webPlugin.d.mts +13 -0
- package/dist/src/web/types/webPlugin.d.mts.map +1 -1
- package/dist/web.d.mts +2 -2
- package/dist/webCompositions.cjs +43 -2
- package/dist/webCompositions.cjs.map +1 -1
- package/dist/webCompositions.d.mts +22 -0
- package/dist/webCompositions.d.mts.map +1 -1
- package/dist/webCompositions.mjs +43 -2
- package/dist/webCompositions.mjs.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpApiContracts.cjs","names":["Type","CURRENT_ROUTE","API_BASE_PATH","ITEM_ROUTE"],"sources":["../../../src/schemas/httpApiContracts.ts"],"sourcesContent":["import { Type, type TSchema } from 'typebox';\n\nimport { API_BASE_PATH, CURRENT_ROUTE, ITEM_ROUTE } from '../constants/contextApi';\nimport type { PoHttpContract } from './apiContracts';\n\nconst Text = Type.String();\nconst Optional = Type.Optional;\nconst Strings = Type.Array(Text);\nconst Flag = Type.Boolean();\nconst NumberValue = Type.Number();\nexport const ApiErrorSchema = Type.Object({ error: Text, hash: Optional(Text) });\nexport const ApiOkSchema = Type.Object({ ok: Type.Literal(true) });\nconst Json = Type.Unknown({ description: 'Value whose schema is supplied by the selected runtime contribution.' });\n\n/** Common JSON response construction; status and payload remain explicit at the declaration. */\nexport function jsonApiResponses(schema: object | boolean, status = 200): PoHttpContract['responses'] {\n return {\n [status]: { description: 'Successful response', contentType: 'application/json', schema },\n '400': { description: 'Invalid request', schema: ApiErrorSchema },\n '401': { description: 'Authentication required', schema: ApiErrorSchema },\n '403': { description: 'Request is not authorized', schema: ApiErrorSchema },\n '404': { description: 'Resource or capability unavailable', schema: ApiErrorSchema },\n '409': { description: 'Conflicting state', schema: ApiErrorSchema },\n '422': { description: 'Invalid operation', schema: ApiErrorSchema },\n '500': { description: 'Host operation failed', schema: ApiErrorSchema },\n '502': { description: 'Provider failed', schema: ApiErrorSchema },\n '503': { description: 'Service unavailable', schema: ApiErrorSchema },\n };\n}\nexport const WebCompositionSchema = Type.Object({\n id: Text,\n scope: Type.Union([Type.Literal('global'), Type.Literal('workspace'), Type.Literal('session')]),\n revision: NumberValue,\n manifestUrl: Text,\n rawAssetBaseUrl: Text,\n verifiedAssetBaseUrl: Text,\n pluginEntries: Type.Array(Type.Tuple([Text, Text])),\n assetPaths: Strings,\n stylePaths: Strings,\n channels: Strings,\n});\nexport const NativeCompositionSchema = Type.Object({\n id: Text,\n scope: Type.Union([Type.Literal('global'), Type.Literal('workspace'), Type.Literal('session')]),\n revision: NumberValue,\n manifestUrl: Text,\n rawAssetBaseUrl: Text,\n entryPath: Text,\n channels: Strings,\n plugins: Strings,\n});\n/** A configured template id and the mount whose compositions offer it. */\nconst TemplateDecisionSchema = Type.Object({\n id: Optional(Text),\n mount: Type.Union([\n Type.Object({ scope: Type.Literal('global') }),\n Type.Object({ scope: Type.Literal('workspace'), workspaceId: Text }),\n ]),\n});\nexport const SessionSummarySchema = Type.Object({\n id: Text,\n workspaceId: Optional(Text),\n webComposition: Optional(WebCompositionSchema),\n nativeComposition: Optional(NativeCompositionSchema),\n name: Text,\n cwd: Text,\n createdAt: Text,\n updatedAt: Text,\n phase: Type.Union([Type.Literal('idle'), Type.Literal('turn'), Type.Literal('compaction'), Type.Literal('retry')]),\n phaseSince: Text,\n attach: Type.Literal('attached'),\n pendingMessageCount: NumberValue,\n everPrompted: Flag,\n awaitingInput: Flag,\n lastSettledAt: Optional(Text),\n git: Optional(Type.Object({ branch: Text, dirty: Flag })),\n profile: Optional(Type.Object({ name: Text, displayName: Optional(Text), iconVersion: Optional(Text) })),\n parentSessionId: Optional(Text),\n sessionProvenance: Optional(Text),\n /** The line the session's extension published about background work it runs. */\n activity: Optional(Type.Object({ label: Text, attention: Optional(Flag), since: Optional(Text) })),\n pendingSetups: Optional(\n Type.Array(\n Type.Object({\n id: Text,\n name: Text,\n createdAt: Text,\n cwd: Optional(Text),\n setupKind: Optional(Type.Union([Type.Literal('managed-worktree'), Type.Literal('existing-directory')])),\n status: Optional(\n Type.Union([Type.Literal('provisioning'), Type.Literal('failed'), Type.Literal('interrupted')]),\n ),\n errorCode: Optional(\n Type.Union([Type.Literal('SESSION_WORKTREE_PROVISION_FAILED'), Type.Literal('SESSION_UNAVAILABLE')]),\n ),\n }),\n ),\n ),\n groups: Optional(Strings),\n backgroundWorkActive: Optional(Flag),\n /** Present and true for a recorded session the server has not reopened yet. */\n dormant: Optional(Flag),\n});\nexport const WorkspaceSchema = Type.Object({ id: Text, root: Text, name: Optional(Text), available: Optional(Flag) });\nconst SavedSession = Type.Object({\n id: Text,\n name: Optional(Text),\n firstMessage: Text,\n createdAt: Text,\n updatedAt: Text,\n});\nconst query = (\n name: string,\n schema: TSchema = Text,\n required = false,\n): NonNullable<PoHttpContract['parameters']>[number] => ({ name, in: 'query', required, schema });\nconst body = (schema: TSchema): NonNullable<PoHttpContract['body']> => ({\n contentType: 'application/json',\n required: true,\n schema,\n});\nconst host = (\n id: string,\n path: string,\n method: PoHttpContract['method'],\n result: TSchema,\n extra: Partial<PoHttpContract> = {},\n): PoHttpContract => ({\n id,\n path,\n method,\n scope: 'global',\n authentication: 'owner',\n description: id,\n responses: jsonApiResponses(result),\n ...extra,\n});\nconst Binary = Type.String({ contentEncoding: 'binary' });\nexport const headlessHttpContracts: PoHttpContract[] = [\n host(\n 'health',\n '/api/health',\n 'GET',\n Type.Object({\n ok: Type.Literal(true),\n role: Type.Literal('hub'),\n protocol: Type.Literal(1),\n sessions: NumberValue,\n }),\n { authentication: 'none' },\n ),\n host('telemetry.browser', '/api/telemetry/browser', 'POST', ApiOkSchema, {\n body: body(\n Type.Object({\n v: Type.Literal(1),\n events: Type.Array(\n Type.Object({\n name: Type.String({ pattern: '^web\\\\.browser\\\\.[a-z_]{1,40}$' }),\n duration_ms: Optional(NumberValue),\n count: Optional(NumberValue),\n }),\n { maxItems: 10 },\n ),\n }),\n ),\n }),\n host(\n 'compositions',\n '/api/compositions',\n 'GET',\n Type.Object({\n global: Optional(WebCompositionSchema),\n nativeGlobal: Optional(NativeCompositionSchema),\n publicKey: Optional(Text),\n shell: Optional(Type.Object({ publicKey: Text, revision: NumberValue })),\n template: Optional(TemplateDecisionSchema),\n /** The phone app's `native.template` choice, resolved the same way. */\n nativeTemplate: Optional(TemplateDecisionSchema),\n workspaces: Type.Array(\n Type.Object({\n id: Text,\n root: Text,\n webComposition: Optional(WebCompositionSchema),\n nativeComposition: Optional(NativeCompositionSchema),\n }),\n ),\n }),\n ),\n host('directories', '/api/directories', 'GET', Type.Object({ directories: Strings }), { parameters: [query('q')] }),\n host(\n 'directories.children',\n '/api/directories/children',\n 'GET',\n Type.Object({ path: Text, parent: Optional(Text), directories: Strings }),\n { parameters: [query('path')] },\n ),\n host('directories.po', '/api/directories/po', 'GET', Type.Object({ directories: Strings })),\n host(\n 'sessions.list',\n '/api/workspaces/{workspaceId}/sessions',\n 'GET',\n Type.Object({ sessions: Type.Array(SessionSummarySchema) }),\n ),\n host('sessions.create', '/api/workspaces/{workspaceId}/sessions', 'POST', Type.Object({ sessionId: Text }), {\n body: body(Type.Object({ name: Optional(Text) })),\n responses: jsonApiResponses(Type.Object({ sessionId: Text }), 201),\n }),\n host('sessions.get', '/api/workspaces/{workspaceId}/sessions/{sessionId}', 'GET', SessionSummarySchema),\n host('sessions.delete', '/api/workspaces/{workspaceId}/sessions/{sessionId}', 'DELETE', ApiOkSchema),\n host(\n 'sessions.history',\n '/api/workspaces/{workspaceId}/sessions/{sessionId}/history',\n 'GET',\n Type.Object({ sessions: Type.Array(SavedSession) }),\n { availability: 'Host provides sessionHistory' },\n ),\n host('sessions.restart', '/api/workspaces/{workspaceId}/sessions/{sessionId}/restart', 'POST', ApiOkSchema, {\n availability: 'Host provides restartSession',\n }),\n host('sessions.revive', '/api/workspaces/{workspaceId}/sessions/{sessionId}/revive', 'POST', ApiOkSchema, {\n availability: 'Host provides reviveSession',\n }),\n host(\n 'sessions.resume',\n '/api/workspaces/{workspaceId}/sessions/{sessionId}/resume',\n 'POST',\n Type.Object({ sessionId: Text }),\n {\n availability: 'Host provides resumeSession',\n body: body(Type.Object({ targetSessionId: Type.String({ pattern: '^[A-Za-z0-9_-]+$' }) })),\n },\n ),\n host('sessions.file', '/api/workspaces/{workspaceId}/sessions/{sessionId}/file', 'GET', Binary, {\n parameters: [query('path', Text, true)],\n responses: {\n ...jsonApiResponses(Binary),\n '200': { description: 'File bytes, MIME type follows the file extension', contentType: '*/*', schema: Binary },\n },\n }),\n host('workspaces.list', '/api/workspaces', 'GET', Type.Object({ workspaces: Type.Array(WorkspaceSchema) })),\n host('workspaces.admit', '/api/workspaces', 'POST', Type.Object({ workspace: WorkspaceSchema }), {\n body: body(Type.Object({ root: Optional(Text), name: Optional(Text) })),\n responses: jsonApiResponses(Type.Object({ workspace: WorkspaceSchema }), 201),\n }),\n host('workspaces.get', '/api/workspaces/{workspaceId}', 'GET', Type.Object({ workspace: WorkspaceSchema })),\n host(\n 'workspaces.history',\n '/api/workspaces/{workspaceId}/history',\n 'GET',\n Type.Object({ sessions: Type.Array(SavedSession) }),\n {\n availability: 'Host provides workspaceHistory',\n },\n ),\n host('workspaces.resume', '/api/workspaces/{workspaceId}/resume', 'POST', Type.Object({ sessionId: Text }), {\n availability: 'Host provides resumeWorkspaceSession',\n body: body(Type.Object({ targetSessionId: Type.String({ pattern: '^[A-Za-z0-9_-]+$' }) })),\n }),\n host('workspaces.remove', '/api/workspaces/{workspaceId}', 'DELETE', ApiOkSchema),\n];\nconst AuthType = Type.Union([Type.Literal('api_key'), Type.Literal('oauth')]);\nconst Provider = Type.Object({\n id: Text,\n name: Text,\n methods: Type.Array(Type.Object({ type: AuthType, label: Text })),\n authenticated: Optional(Type.Object({ type: AuthType, source: Optional(Text) })),\n});\nconst LoginEvent = Type.Union([\n Type.Object({\n type: Type.Literal('info'),\n message: Text,\n links: Optional(Type.Array(Type.Object({ url: Text, label: Optional(Text) }))),\n }),\n Type.Object({ type: Type.Literal('auth_url'), url: Text, instructions: Optional(Text) }),\n Type.Object({\n type: Type.Literal('device_code'),\n userCode: Text,\n verificationUri: Text,\n intervalSeconds: Optional(NumberValue),\n expiresInSeconds: Optional(NumberValue),\n }),\n Type.Object({ type: Type.Literal('progress'), message: Text }),\n]);\nexport const LoginFlowSchema = Type.Object({\n id: Text,\n providerId: Text,\n providerName: Text,\n type: AuthType,\n status: Type.Union([\n Type.Literal('running'),\n Type.Literal('succeeded'),\n Type.Literal('failed'),\n Type.Literal('cancelled'),\n ]),\n events: Type.Array(LoginEvent),\n prompt: Optional(\n Type.Object({\n id: Text,\n type: Type.Union([\n Type.Literal('text'),\n Type.Literal('secret'),\n Type.Literal('select'),\n Type.Literal('manual_code'),\n ]),\n message: Text,\n placeholder: Optional(Text),\n options: Optional(Type.Array(Type.Object({ id: Text, label: Text, description: Optional(Text) }))),\n }),\n ),\n remote: Optional(Flag),\n error: Optional(Text),\n});\nconst Flow = Type.Object({ flow: LoginFlowSchema });\nexport const machineHttpContracts: PoHttpContract[] = [\n host('providers.list', '/providers', 'GET', Type.Object({ providers: Type.Array(Provider) })),\n host(\n 'models.list',\n '/models',\n 'GET',\n Type.Object({ models: Type.Array(Type.Object({ value: Text, label: Text, group: Text })) }),\n ),\n host('providers.logout', '/providers/{providerId}', 'DELETE', ApiOkSchema),\n host('logins.create', '/logins', 'POST', Flow, {\n body: body(Type.Object({ providerId: Text, type: AuthType })),\n responses: jsonApiResponses(Flow, 201),\n }),\n host('logins.get', '/logins/{flowId}', 'GET', Flow),\n host('logins.cancel', '/logins/{flowId}', 'DELETE', Flow),\n host('logins.answer', '/logins/{flowId}/answer', 'POST', Flow, {\n body: body(Type.Object({ promptId: Text, value: Text })),\n }),\n].map((route) => ({ ...route, basePath: 'po' }));\nconst Source = Type.Union([\n Type.Literal('extension'),\n Type.Literal('mcp'),\n Type.Literal('plugin'),\n Type.Literal('core'),\n]);\nconst Detail = Type.Union([\n Type.Object({\n itemKind: Type.Literal('tool'),\n name: Text,\n owner: Text,\n source: Source,\n active: Flag,\n tokens: Type.Object({ schemaTokens: NumberValue, promptTokens: NumberValue, totalTokens: NumberValue }),\n description: Optional(Text),\n promptSnippet: Optional(Text),\n promptGuidelines: Optional(Strings),\n parameters: Optional(Json),\n }),\n Type.Object({\n itemKind: Type.Literal('skill'),\n name: Text,\n owner: Text,\n source: Source,\n active: Type.Literal(true),\n tokens: NumberValue,\n description: Text,\n filePath: Optional(Text),\n modelInvocable: Flag,\n }),\n Type.Object({\n itemKind: Type.Literal('prompt'),\n name: Type.Literal('system'),\n tokens: NumberValue,\n stage: Type.Union([Type.Literal('base'), Type.Literal('effective')]),\n text: Text,\n }),\n]);\nconst ContextProjection = Type.Object({\n version: Type.Literal(1),\n revision: NumberValue,\n selection: Type.Object({ majorMode: Text, domains: Strings, profile: Optional(Text) }),\n groups: Type.Array(\n Type.Object({\n id: Text,\n label: Text,\n kind: Type.Union([Type.Literal('major'), Type.Literal('minor'), Type.Literal('domain'), Type.Literal('core')]),\n items: Type.Array(\n Type.Object({\n name: Text,\n itemKind: Type.Union([Type.Literal('tool'), Type.Literal('skill')]),\n source: Source,\n owner: Text,\n tokens: NumberValue,\n active: Flag,\n }),\n ),\n tokens: NumberValue,\n inactiveTokens: NumberValue,\n }),\n ),\n totalTokens: NumberValue,\n inactiveTokens: NumberValue,\n systemPrompt: Optional(\n Type.Object({\n tokens: NumberValue,\n stage: Type.Union([Type.Literal('base'), Type.Literal('effective')]),\n }),\n ),\n estimator: Type.Literal('gpt-tokenizer'),\n});\nexport const sessionHttpContracts: PoHttpContract[] = [\n {\n ...host('context.current', CURRENT_ROUTE, 'GET', ContextProjection),\n scope: 'session',\n basePath: API_BASE_PATH,\n },\n {\n ...host('context.item', ITEM_ROUTE, 'GET', Type.Object({ revision: NumberValue, item: Detail }), {\n parameters: [\n query('kind', Type.Union([Type.Literal('tool'), Type.Literal('skill'), Type.Literal('prompt')]), true),\n query('name', Text, true),\n ],\n }),\n scope: 'session',\n basePath: API_BASE_PATH,\n },\n {\n ...host('files.complete', '/', 'GET', Type.Object({ files: Strings }), {\n parameters: [query('q', Type.String({ maxLength: 256 }))],\n }),\n scope: 'session',\n basePath: 'files',\n },\n];\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"httpApiContracts.cjs","names":["Type","CURRENT_ROUTE","API_BASE_PATH","ITEM_ROUTE"],"sources":["../../../src/schemas/httpApiContracts.ts"],"sourcesContent":["import { Type, type TSchema } from 'typebox';\n\nimport { API_BASE_PATH, CURRENT_ROUTE, ITEM_ROUTE } from '../constants/contextApi';\nimport type { PoHttpContract } from './apiContracts';\n\nconst Text = Type.String();\nconst Optional = Type.Optional;\nconst Strings = Type.Array(Text);\nconst Flag = Type.Boolean();\nconst NumberValue = Type.Number();\nexport const ApiErrorSchema = Type.Object({ error: Text, hash: Optional(Text) });\nexport const ApiOkSchema = Type.Object({ ok: Type.Literal(true) });\nconst Json = Type.Unknown({ description: 'Value whose schema is supplied by the selected runtime contribution.' });\n\n/** Common JSON response construction; status and payload remain explicit at the declaration. */\nexport function jsonApiResponses(schema: object | boolean, status = 200): PoHttpContract['responses'] {\n return {\n [status]: { description: 'Successful response', contentType: 'application/json', schema },\n '400': { description: 'Invalid request', schema: ApiErrorSchema },\n '401': { description: 'Authentication required', schema: ApiErrorSchema },\n '403': { description: 'Request is not authorized', schema: ApiErrorSchema },\n '404': { description: 'Resource or capability unavailable', schema: ApiErrorSchema },\n '409': { description: 'Conflicting state', schema: ApiErrorSchema },\n '422': { description: 'Invalid operation', schema: ApiErrorSchema },\n '500': { description: 'Host operation failed', schema: ApiErrorSchema },\n '502': { description: 'Provider failed', schema: ApiErrorSchema },\n '503': { description: 'Service unavailable', schema: ApiErrorSchema },\n };\n}\nexport const WebCompositionSchema = Type.Object({\n id: Text,\n scope: Type.Union([Type.Literal('global'), Type.Literal('workspace'), Type.Literal('session')]),\n revision: NumberValue,\n manifestUrl: Text,\n rawAssetBaseUrl: Text,\n verifiedAssetBaseUrl: Text,\n pluginEntries: Type.Array(Type.Tuple([Text, Text])),\n assetPaths: Strings,\n stylePaths: Strings,\n channels: Strings,\n});\nexport const NativeCompositionSchema = Type.Object({\n id: Text,\n scope: Type.Union([Type.Literal('global'), Type.Literal('workspace'), Type.Literal('session')]),\n revision: NumberValue,\n manifestUrl: Text,\n rawAssetBaseUrl: Text,\n entryPath: Text,\n channels: Strings,\n plugins: Strings,\n});\n/** One platform's signed over-the-air app bundle; `fingerprint` names the binaries it runs on. */\nconst NativeAppSchema = Type.Object({\n id: Text,\n revision: NumberValue,\n manifestUrl: Text,\n rawAssetBaseUrl: Text,\n fingerprint: Text,\n});\n/** A configured template id and the mount whose compositions offer it. */\nconst TemplateDecisionSchema = Type.Object({\n id: Optional(Text),\n mount: Type.Union([\n Type.Object({ scope: Type.Literal('global') }),\n Type.Object({ scope: Type.Literal('workspace'), workspaceId: Text }),\n ]),\n});\nexport const SessionSummarySchema = Type.Object({\n id: Text,\n workspaceId: Optional(Text),\n webComposition: Optional(WebCompositionSchema),\n nativeComposition: Optional(NativeCompositionSchema),\n name: Text,\n cwd: Text,\n createdAt: Text,\n updatedAt: Text,\n phase: Type.Union([Type.Literal('idle'), Type.Literal('turn'), Type.Literal('compaction'), Type.Literal('retry')]),\n phaseSince: Text,\n attach: Type.Literal('attached'),\n pendingMessageCount: NumberValue,\n everPrompted: Flag,\n awaitingInput: Flag,\n lastSettledAt: Optional(Text),\n git: Optional(Type.Object({ branch: Text, dirty: Flag })),\n profile: Optional(Type.Object({ name: Text, displayName: Optional(Text), iconVersion: Optional(Text) })),\n parentSessionId: Optional(Text),\n sessionProvenance: Optional(Text),\n /** The line the session's extension published about background work it runs. */\n activity: Optional(Type.Object({ label: Text, attention: Optional(Flag), since: Optional(Text) })),\n pendingSetups: Optional(\n Type.Array(\n Type.Object({\n id: Text,\n name: Text,\n createdAt: Text,\n cwd: Optional(Text),\n setupKind: Optional(Type.Union([Type.Literal('managed-worktree'), Type.Literal('existing-directory')])),\n status: Optional(\n Type.Union([Type.Literal('provisioning'), Type.Literal('failed'), Type.Literal('interrupted')]),\n ),\n errorCode: Optional(\n Type.Union([Type.Literal('SESSION_WORKTREE_PROVISION_FAILED'), Type.Literal('SESSION_UNAVAILABLE')]),\n ),\n }),\n ),\n ),\n groups: Optional(Strings),\n backgroundWorkActive: Optional(Flag),\n /** Present and true for a recorded session the server has not reopened yet. */\n dormant: Optional(Flag),\n});\nexport const WorkspaceSchema = Type.Object({ id: Text, root: Text, name: Optional(Text), available: Optional(Flag) });\nconst SavedSession = Type.Object({\n id: Text,\n name: Optional(Text),\n firstMessage: Text,\n createdAt: Text,\n updatedAt: Text,\n});\nconst query = (\n name: string,\n schema: TSchema = Text,\n required = false,\n): NonNullable<PoHttpContract['parameters']>[number] => ({ name, in: 'query', required, schema });\nconst body = (schema: TSchema): NonNullable<PoHttpContract['body']> => ({\n contentType: 'application/json',\n required: true,\n schema,\n});\nconst host = (\n id: string,\n path: string,\n method: PoHttpContract['method'],\n result: TSchema,\n extra: Partial<PoHttpContract> = {},\n): PoHttpContract => ({\n id,\n path,\n method,\n scope: 'global',\n authentication: 'owner',\n description: id,\n responses: jsonApiResponses(result),\n ...extra,\n});\nconst Binary = Type.String({ contentEncoding: 'binary' });\nexport const headlessHttpContracts: PoHttpContract[] = [\n host(\n 'health',\n '/api/health',\n 'GET',\n Type.Object({\n ok: Type.Literal(true),\n role: Type.Literal('hub'),\n protocol: Type.Literal(1),\n sessions: NumberValue,\n }),\n { authentication: 'none' },\n ),\n host('telemetry.browser', '/api/telemetry/browser', 'POST', ApiOkSchema, {\n body: body(\n Type.Object({\n v: Type.Literal(1),\n events: Type.Array(\n Type.Object({\n name: Type.String({ pattern: '^web\\\\.browser\\\\.[a-z_]{1,40}$' }),\n duration_ms: Optional(NumberValue),\n count: Optional(NumberValue),\n }),\n { maxItems: 10 },\n ),\n }),\n ),\n }),\n host(\n 'compositions',\n '/api/compositions',\n 'GET',\n Type.Object({\n global: Optional(WebCompositionSchema),\n nativeGlobal: Optional(NativeCompositionSchema),\n /** App bundles by platform, which a phone loads only when its own fingerprint matches. */\n nativeApp: Optional(Type.Record(Text, NativeAppSchema)),\n publicKey: Optional(Text),\n shell: Optional(Type.Object({ publicKey: Text, revision: NumberValue })),\n template: Optional(TemplateDecisionSchema),\n /** The phone app's `native.template` choice, resolved the same way. */\n nativeTemplate: Optional(TemplateDecisionSchema),\n workspaces: Type.Array(\n Type.Object({\n id: Text,\n root: Text,\n webComposition: Optional(WebCompositionSchema),\n nativeComposition: Optional(NativeCompositionSchema),\n }),\n ),\n }),\n ),\n host('directories', '/api/directories', 'GET', Type.Object({ directories: Strings }), { parameters: [query('q')] }),\n host(\n 'directories.children',\n '/api/directories/children',\n 'GET',\n Type.Object({ path: Text, parent: Optional(Text), directories: Strings }),\n { parameters: [query('path')] },\n ),\n host('directories.po', '/api/directories/po', 'GET', Type.Object({ directories: Strings })),\n host(\n 'sessions.list',\n '/api/workspaces/{workspaceId}/sessions',\n 'GET',\n Type.Object({ sessions: Type.Array(SessionSummarySchema) }),\n ),\n host('sessions.create', '/api/workspaces/{workspaceId}/sessions', 'POST', Type.Object({ sessionId: Text }), {\n body: body(Type.Object({ name: Optional(Text) })),\n responses: jsonApiResponses(Type.Object({ sessionId: Text }), 201),\n }),\n host('sessions.get', '/api/workspaces/{workspaceId}/sessions/{sessionId}', 'GET', SessionSummarySchema),\n host('sessions.delete', '/api/workspaces/{workspaceId}/sessions/{sessionId}', 'DELETE', ApiOkSchema),\n host(\n 'sessions.history',\n '/api/workspaces/{workspaceId}/sessions/{sessionId}/history',\n 'GET',\n Type.Object({ sessions: Type.Array(SavedSession) }),\n { availability: 'Host provides sessionHistory' },\n ),\n host('sessions.restart', '/api/workspaces/{workspaceId}/sessions/{sessionId}/restart', 'POST', ApiOkSchema, {\n availability: 'Host provides restartSession',\n }),\n host('sessions.revive', '/api/workspaces/{workspaceId}/sessions/{sessionId}/revive', 'POST', ApiOkSchema, {\n availability: 'Host provides reviveSession',\n }),\n host(\n 'sessions.resume',\n '/api/workspaces/{workspaceId}/sessions/{sessionId}/resume',\n 'POST',\n Type.Object({ sessionId: Text }),\n {\n availability: 'Host provides resumeSession',\n body: body(Type.Object({ targetSessionId: Type.String({ pattern: '^[A-Za-z0-9_-]+$' }) })),\n },\n ),\n host('sessions.file', '/api/workspaces/{workspaceId}/sessions/{sessionId}/file', 'GET', Binary, {\n parameters: [query('path', Text, true)],\n responses: {\n ...jsonApiResponses(Binary),\n '200': { description: 'File bytes, MIME type follows the file extension', contentType: '*/*', schema: Binary },\n },\n }),\n host('workspaces.list', '/api/workspaces', 'GET', Type.Object({ workspaces: Type.Array(WorkspaceSchema) })),\n host('workspaces.admit', '/api/workspaces', 'POST', Type.Object({ workspace: WorkspaceSchema }), {\n body: body(Type.Object({ root: Optional(Text), name: Optional(Text) })),\n responses: jsonApiResponses(Type.Object({ workspace: WorkspaceSchema }), 201),\n }),\n host('workspaces.get', '/api/workspaces/{workspaceId}', 'GET', Type.Object({ workspace: WorkspaceSchema })),\n host(\n 'workspaces.history',\n '/api/workspaces/{workspaceId}/history',\n 'GET',\n Type.Object({ sessions: Type.Array(SavedSession) }),\n {\n availability: 'Host provides workspaceHistory',\n },\n ),\n host('workspaces.resume', '/api/workspaces/{workspaceId}/resume', 'POST', Type.Object({ sessionId: Text }), {\n availability: 'Host provides resumeWorkspaceSession',\n body: body(Type.Object({ targetSessionId: Type.String({ pattern: '^[A-Za-z0-9_-]+$' }) })),\n }),\n host('workspaces.remove', '/api/workspaces/{workspaceId}', 'DELETE', ApiOkSchema),\n];\nconst AuthType = Type.Union([Type.Literal('api_key'), Type.Literal('oauth')]);\nconst Provider = Type.Object({\n id: Text,\n name: Text,\n methods: Type.Array(Type.Object({ type: AuthType, label: Text })),\n authenticated: Optional(Type.Object({ type: AuthType, source: Optional(Text) })),\n});\nconst LoginEvent = Type.Union([\n Type.Object({\n type: Type.Literal('info'),\n message: Text,\n links: Optional(Type.Array(Type.Object({ url: Text, label: Optional(Text) }))),\n }),\n Type.Object({ type: Type.Literal('auth_url'), url: Text, instructions: Optional(Text) }),\n Type.Object({\n type: Type.Literal('device_code'),\n userCode: Text,\n verificationUri: Text,\n intervalSeconds: Optional(NumberValue),\n expiresInSeconds: Optional(NumberValue),\n }),\n Type.Object({ type: Type.Literal('progress'), message: Text }),\n]);\nexport const LoginFlowSchema = Type.Object({\n id: Text,\n providerId: Text,\n providerName: Text,\n type: AuthType,\n status: Type.Union([\n Type.Literal('running'),\n Type.Literal('succeeded'),\n Type.Literal('failed'),\n Type.Literal('cancelled'),\n ]),\n events: Type.Array(LoginEvent),\n prompt: Optional(\n Type.Object({\n id: Text,\n type: Type.Union([\n Type.Literal('text'),\n Type.Literal('secret'),\n Type.Literal('select'),\n Type.Literal('manual_code'),\n ]),\n message: Text,\n placeholder: Optional(Text),\n options: Optional(Type.Array(Type.Object({ id: Text, label: Text, description: Optional(Text) }))),\n }),\n ),\n remote: Optional(Flag),\n error: Optional(Text),\n});\nconst Flow = Type.Object({ flow: LoginFlowSchema });\nexport const machineHttpContracts: PoHttpContract[] = [\n host('providers.list', '/providers', 'GET', Type.Object({ providers: Type.Array(Provider) })),\n host(\n 'models.list',\n '/models',\n 'GET',\n Type.Object({ models: Type.Array(Type.Object({ value: Text, label: Text, group: Text })) }),\n ),\n host('providers.logout', '/providers/{providerId}', 'DELETE', ApiOkSchema),\n host('logins.create', '/logins', 'POST', Flow, {\n body: body(Type.Object({ providerId: Text, type: AuthType })),\n responses: jsonApiResponses(Flow, 201),\n }),\n host('logins.get', '/logins/{flowId}', 'GET', Flow),\n host('logins.cancel', '/logins/{flowId}', 'DELETE', Flow),\n host('logins.answer', '/logins/{flowId}/answer', 'POST', Flow, {\n body: body(Type.Object({ promptId: Text, value: Text })),\n }),\n].map((route) => ({ ...route, basePath: 'po' }));\nconst Source = Type.Union([\n Type.Literal('extension'),\n Type.Literal('mcp'),\n Type.Literal('plugin'),\n Type.Literal('core'),\n]);\nconst Detail = Type.Union([\n Type.Object({\n itemKind: Type.Literal('tool'),\n name: Text,\n owner: Text,\n source: Source,\n active: Flag,\n tokens: Type.Object({ schemaTokens: NumberValue, promptTokens: NumberValue, totalTokens: NumberValue }),\n description: Optional(Text),\n promptSnippet: Optional(Text),\n promptGuidelines: Optional(Strings),\n parameters: Optional(Json),\n }),\n Type.Object({\n itemKind: Type.Literal('skill'),\n name: Text,\n owner: Text,\n source: Source,\n active: Type.Literal(true),\n tokens: NumberValue,\n description: Text,\n filePath: Optional(Text),\n modelInvocable: Flag,\n }),\n Type.Object({\n itemKind: Type.Literal('prompt'),\n name: Type.Literal('system'),\n tokens: NumberValue,\n stage: Type.Union([Type.Literal('base'), Type.Literal('effective')]),\n text: Text,\n }),\n]);\nconst ContextProjection = Type.Object({\n version: Type.Literal(1),\n revision: NumberValue,\n selection: Type.Object({ majorMode: Text, domains: Strings, profile: Optional(Text) }),\n groups: Type.Array(\n Type.Object({\n id: Text,\n label: Text,\n kind: Type.Union([Type.Literal('major'), Type.Literal('minor'), Type.Literal('domain'), Type.Literal('core')]),\n items: Type.Array(\n Type.Object({\n name: Text,\n itemKind: Type.Union([Type.Literal('tool'), Type.Literal('skill')]),\n source: Source,\n owner: Text,\n tokens: NumberValue,\n active: Flag,\n }),\n ),\n tokens: NumberValue,\n inactiveTokens: NumberValue,\n }),\n ),\n totalTokens: NumberValue,\n inactiveTokens: NumberValue,\n systemPrompt: Optional(\n Type.Object({\n tokens: NumberValue,\n stage: Type.Union([Type.Literal('base'), Type.Literal('effective')]),\n }),\n ),\n estimator: Type.Literal('gpt-tokenizer'),\n});\nexport const sessionHttpContracts: PoHttpContract[] = [\n {\n ...host('context.current', CURRENT_ROUTE, 'GET', ContextProjection),\n scope: 'session',\n basePath: API_BASE_PATH,\n },\n {\n ...host('context.item', ITEM_ROUTE, 'GET', Type.Object({ revision: NumberValue, item: Detail }), {\n parameters: [\n query('kind', Type.Union([Type.Literal('tool'), Type.Literal('skill'), Type.Literal('prompt')]), true),\n query('name', Text, true),\n ],\n }),\n scope: 'session',\n basePath: API_BASE_PATH,\n },\n {\n ...host('files.complete', '/', 'GET', Type.Object({ files: Strings }), {\n parameters: [query('q', Type.String({ maxLength: 256 }))],\n }),\n scope: 'session',\n basePath: 'files',\n },\n];\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpApiContracts.d.mts","names":[],"sources":["../../../src/schemas/httpApiContracts.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"httpApiContracts.d.mts","names":[],"sources":["../../../src/schemas/httpApiContracts.ts"],"mappings":";;;qBAmEa,sBAAoB,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBA4CpB,iBAAe,KAAA"}
|
|
@@ -88,6 +88,14 @@ const NativeCompositionSchema = Type.Object({
|
|
|
88
88
|
channels: Strings,
|
|
89
89
|
plugins: Strings
|
|
90
90
|
});
|
|
91
|
+
/** One platform's signed over-the-air app bundle; `fingerprint` names the binaries it runs on. */
|
|
92
|
+
const NativeAppSchema = Type.Object({
|
|
93
|
+
id: Text,
|
|
94
|
+
revision: NumberValue,
|
|
95
|
+
manifestUrl: Text,
|
|
96
|
+
rawAssetBaseUrl: Text,
|
|
97
|
+
fingerprint: Text
|
|
98
|
+
});
|
|
91
99
|
/** A configured template id and the mount whose compositions offer it. */
|
|
92
100
|
const TemplateDecisionSchema = Type.Object({
|
|
93
101
|
id: Optional(Text),
|
|
@@ -202,6 +210,8 @@ host("health", "/api/health", "GET", Type.Object({
|
|
|
202
210
|
})) }), host("compositions", "/api/compositions", "GET", Type.Object({
|
|
203
211
|
global: Optional(WebCompositionSchema),
|
|
204
212
|
nativeGlobal: Optional(NativeCompositionSchema),
|
|
213
|
+
/** App bundles by platform, which a phone loads only when its own fingerprint matches. */
|
|
214
|
+
nativeApp: Optional(Type.Record(Text, NativeAppSchema)),
|
|
205
215
|
publicKey: Optional(Text),
|
|
206
216
|
shell: Optional(Type.Object({
|
|
207
217
|
publicKey: Text,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpApiContracts.mjs","names":[],"sources":["../../../src/schemas/httpApiContracts.ts"],"sourcesContent":["import { Type, type TSchema } from 'typebox';\n\nimport { API_BASE_PATH, CURRENT_ROUTE, ITEM_ROUTE } from '../constants/contextApi';\nimport type { PoHttpContract } from './apiContracts';\n\nconst Text = Type.String();\nconst Optional = Type.Optional;\nconst Strings = Type.Array(Text);\nconst Flag = Type.Boolean();\nconst NumberValue = Type.Number();\nexport const ApiErrorSchema = Type.Object({ error: Text, hash: Optional(Text) });\nexport const ApiOkSchema = Type.Object({ ok: Type.Literal(true) });\nconst Json = Type.Unknown({ description: 'Value whose schema is supplied by the selected runtime contribution.' });\n\n/** Common JSON response construction; status and payload remain explicit at the declaration. */\nexport function jsonApiResponses(schema: object | boolean, status = 200): PoHttpContract['responses'] {\n return {\n [status]: { description: 'Successful response', contentType: 'application/json', schema },\n '400': { description: 'Invalid request', schema: ApiErrorSchema },\n '401': { description: 'Authentication required', schema: ApiErrorSchema },\n '403': { description: 'Request is not authorized', schema: ApiErrorSchema },\n '404': { description: 'Resource or capability unavailable', schema: ApiErrorSchema },\n '409': { description: 'Conflicting state', schema: ApiErrorSchema },\n '422': { description: 'Invalid operation', schema: ApiErrorSchema },\n '500': { description: 'Host operation failed', schema: ApiErrorSchema },\n '502': { description: 'Provider failed', schema: ApiErrorSchema },\n '503': { description: 'Service unavailable', schema: ApiErrorSchema },\n };\n}\nexport const WebCompositionSchema = Type.Object({\n id: Text,\n scope: Type.Union([Type.Literal('global'), Type.Literal('workspace'), Type.Literal('session')]),\n revision: NumberValue,\n manifestUrl: Text,\n rawAssetBaseUrl: Text,\n verifiedAssetBaseUrl: Text,\n pluginEntries: Type.Array(Type.Tuple([Text, Text])),\n assetPaths: Strings,\n stylePaths: Strings,\n channels: Strings,\n});\nexport const NativeCompositionSchema = Type.Object({\n id: Text,\n scope: Type.Union([Type.Literal('global'), Type.Literal('workspace'), Type.Literal('session')]),\n revision: NumberValue,\n manifestUrl: Text,\n rawAssetBaseUrl: Text,\n entryPath: Text,\n channels: Strings,\n plugins: Strings,\n});\n/** A configured template id and the mount whose compositions offer it. */\nconst TemplateDecisionSchema = Type.Object({\n id: Optional(Text),\n mount: Type.Union([\n Type.Object({ scope: Type.Literal('global') }),\n Type.Object({ scope: Type.Literal('workspace'), workspaceId: Text }),\n ]),\n});\nexport const SessionSummarySchema = Type.Object({\n id: Text,\n workspaceId: Optional(Text),\n webComposition: Optional(WebCompositionSchema),\n nativeComposition: Optional(NativeCompositionSchema),\n name: Text,\n cwd: Text,\n createdAt: Text,\n updatedAt: Text,\n phase: Type.Union([Type.Literal('idle'), Type.Literal('turn'), Type.Literal('compaction'), Type.Literal('retry')]),\n phaseSince: Text,\n attach: Type.Literal('attached'),\n pendingMessageCount: NumberValue,\n everPrompted: Flag,\n awaitingInput: Flag,\n lastSettledAt: Optional(Text),\n git: Optional(Type.Object({ branch: Text, dirty: Flag })),\n profile: Optional(Type.Object({ name: Text, displayName: Optional(Text), iconVersion: Optional(Text) })),\n parentSessionId: Optional(Text),\n sessionProvenance: Optional(Text),\n /** The line the session's extension published about background work it runs. */\n activity: Optional(Type.Object({ label: Text, attention: Optional(Flag), since: Optional(Text) })),\n pendingSetups: Optional(\n Type.Array(\n Type.Object({\n id: Text,\n name: Text,\n createdAt: Text,\n cwd: Optional(Text),\n setupKind: Optional(Type.Union([Type.Literal('managed-worktree'), Type.Literal('existing-directory')])),\n status: Optional(\n Type.Union([Type.Literal('provisioning'), Type.Literal('failed'), Type.Literal('interrupted')]),\n ),\n errorCode: Optional(\n Type.Union([Type.Literal('SESSION_WORKTREE_PROVISION_FAILED'), Type.Literal('SESSION_UNAVAILABLE')]),\n ),\n }),\n ),\n ),\n groups: Optional(Strings),\n backgroundWorkActive: Optional(Flag),\n /** Present and true for a recorded session the server has not reopened yet. */\n dormant: Optional(Flag),\n});\nexport const WorkspaceSchema = Type.Object({ id: Text, root: Text, name: Optional(Text), available: Optional(Flag) });\nconst SavedSession = Type.Object({\n id: Text,\n name: Optional(Text),\n firstMessage: Text,\n createdAt: Text,\n updatedAt: Text,\n});\nconst query = (\n name: string,\n schema: TSchema = Text,\n required = false,\n): NonNullable<PoHttpContract['parameters']>[number] => ({ name, in: 'query', required, schema });\nconst body = (schema: TSchema): NonNullable<PoHttpContract['body']> => ({\n contentType: 'application/json',\n required: true,\n schema,\n});\nconst host = (\n id: string,\n path: string,\n method: PoHttpContract['method'],\n result: TSchema,\n extra: Partial<PoHttpContract> = {},\n): PoHttpContract => ({\n id,\n path,\n method,\n scope: 'global',\n authentication: 'owner',\n description: id,\n responses: jsonApiResponses(result),\n ...extra,\n});\nconst Binary = Type.String({ contentEncoding: 'binary' });\nexport const headlessHttpContracts: PoHttpContract[] = [\n host(\n 'health',\n '/api/health',\n 'GET',\n Type.Object({\n ok: Type.Literal(true),\n role: Type.Literal('hub'),\n protocol: Type.Literal(1),\n sessions: NumberValue,\n }),\n { authentication: 'none' },\n ),\n host('telemetry.browser', '/api/telemetry/browser', 'POST', ApiOkSchema, {\n body: body(\n Type.Object({\n v: Type.Literal(1),\n events: Type.Array(\n Type.Object({\n name: Type.String({ pattern: '^web\\\\.browser\\\\.[a-z_]{1,40}$' }),\n duration_ms: Optional(NumberValue),\n count: Optional(NumberValue),\n }),\n { maxItems: 10 },\n ),\n }),\n ),\n }),\n host(\n 'compositions',\n '/api/compositions',\n 'GET',\n Type.Object({\n global: Optional(WebCompositionSchema),\n nativeGlobal: Optional(NativeCompositionSchema),\n publicKey: Optional(Text),\n shell: Optional(Type.Object({ publicKey: Text, revision: NumberValue })),\n template: Optional(TemplateDecisionSchema),\n /** The phone app's `native.template` choice, resolved the same way. */\n nativeTemplate: Optional(TemplateDecisionSchema),\n workspaces: Type.Array(\n Type.Object({\n id: Text,\n root: Text,\n webComposition: Optional(WebCompositionSchema),\n nativeComposition: Optional(NativeCompositionSchema),\n }),\n ),\n }),\n ),\n host('directories', '/api/directories', 'GET', Type.Object({ directories: Strings }), { parameters: [query('q')] }),\n host(\n 'directories.children',\n '/api/directories/children',\n 'GET',\n Type.Object({ path: Text, parent: Optional(Text), directories: Strings }),\n { parameters: [query('path')] },\n ),\n host('directories.po', '/api/directories/po', 'GET', Type.Object({ directories: Strings })),\n host(\n 'sessions.list',\n '/api/workspaces/{workspaceId}/sessions',\n 'GET',\n Type.Object({ sessions: Type.Array(SessionSummarySchema) }),\n ),\n host('sessions.create', '/api/workspaces/{workspaceId}/sessions', 'POST', Type.Object({ sessionId: Text }), {\n body: body(Type.Object({ name: Optional(Text) })),\n responses: jsonApiResponses(Type.Object({ sessionId: Text }), 201),\n }),\n host('sessions.get', '/api/workspaces/{workspaceId}/sessions/{sessionId}', 'GET', SessionSummarySchema),\n host('sessions.delete', '/api/workspaces/{workspaceId}/sessions/{sessionId}', 'DELETE', ApiOkSchema),\n host(\n 'sessions.history',\n '/api/workspaces/{workspaceId}/sessions/{sessionId}/history',\n 'GET',\n Type.Object({ sessions: Type.Array(SavedSession) }),\n { availability: 'Host provides sessionHistory' },\n ),\n host('sessions.restart', '/api/workspaces/{workspaceId}/sessions/{sessionId}/restart', 'POST', ApiOkSchema, {\n availability: 'Host provides restartSession',\n }),\n host('sessions.revive', '/api/workspaces/{workspaceId}/sessions/{sessionId}/revive', 'POST', ApiOkSchema, {\n availability: 'Host provides reviveSession',\n }),\n host(\n 'sessions.resume',\n '/api/workspaces/{workspaceId}/sessions/{sessionId}/resume',\n 'POST',\n Type.Object({ sessionId: Text }),\n {\n availability: 'Host provides resumeSession',\n body: body(Type.Object({ targetSessionId: Type.String({ pattern: '^[A-Za-z0-9_-]+$' }) })),\n },\n ),\n host('sessions.file', '/api/workspaces/{workspaceId}/sessions/{sessionId}/file', 'GET', Binary, {\n parameters: [query('path', Text, true)],\n responses: {\n ...jsonApiResponses(Binary),\n '200': { description: 'File bytes, MIME type follows the file extension', contentType: '*/*', schema: Binary },\n },\n }),\n host('workspaces.list', '/api/workspaces', 'GET', Type.Object({ workspaces: Type.Array(WorkspaceSchema) })),\n host('workspaces.admit', '/api/workspaces', 'POST', Type.Object({ workspace: WorkspaceSchema }), {\n body: body(Type.Object({ root: Optional(Text), name: Optional(Text) })),\n responses: jsonApiResponses(Type.Object({ workspace: WorkspaceSchema }), 201),\n }),\n host('workspaces.get', '/api/workspaces/{workspaceId}', 'GET', Type.Object({ workspace: WorkspaceSchema })),\n host(\n 'workspaces.history',\n '/api/workspaces/{workspaceId}/history',\n 'GET',\n Type.Object({ sessions: Type.Array(SavedSession) }),\n {\n availability: 'Host provides workspaceHistory',\n },\n ),\n host('workspaces.resume', '/api/workspaces/{workspaceId}/resume', 'POST', Type.Object({ sessionId: Text }), {\n availability: 'Host provides resumeWorkspaceSession',\n body: body(Type.Object({ targetSessionId: Type.String({ pattern: '^[A-Za-z0-9_-]+$' }) })),\n }),\n host('workspaces.remove', '/api/workspaces/{workspaceId}', 'DELETE', ApiOkSchema),\n];\nconst AuthType = Type.Union([Type.Literal('api_key'), Type.Literal('oauth')]);\nconst Provider = Type.Object({\n id: Text,\n name: Text,\n methods: Type.Array(Type.Object({ type: AuthType, label: Text })),\n authenticated: Optional(Type.Object({ type: AuthType, source: Optional(Text) })),\n});\nconst LoginEvent = Type.Union([\n Type.Object({\n type: Type.Literal('info'),\n message: Text,\n links: Optional(Type.Array(Type.Object({ url: Text, label: Optional(Text) }))),\n }),\n Type.Object({ type: Type.Literal('auth_url'), url: Text, instructions: Optional(Text) }),\n Type.Object({\n type: Type.Literal('device_code'),\n userCode: Text,\n verificationUri: Text,\n intervalSeconds: Optional(NumberValue),\n expiresInSeconds: Optional(NumberValue),\n }),\n Type.Object({ type: Type.Literal('progress'), message: Text }),\n]);\nexport const LoginFlowSchema = Type.Object({\n id: Text,\n providerId: Text,\n providerName: Text,\n type: AuthType,\n status: Type.Union([\n Type.Literal('running'),\n Type.Literal('succeeded'),\n Type.Literal('failed'),\n Type.Literal('cancelled'),\n ]),\n events: Type.Array(LoginEvent),\n prompt: Optional(\n Type.Object({\n id: Text,\n type: Type.Union([\n Type.Literal('text'),\n Type.Literal('secret'),\n Type.Literal('select'),\n Type.Literal('manual_code'),\n ]),\n message: Text,\n placeholder: Optional(Text),\n options: Optional(Type.Array(Type.Object({ id: Text, label: Text, description: Optional(Text) }))),\n }),\n ),\n remote: Optional(Flag),\n error: Optional(Text),\n});\nconst Flow = Type.Object({ flow: LoginFlowSchema });\nexport const machineHttpContracts: PoHttpContract[] = [\n host('providers.list', '/providers', 'GET', Type.Object({ providers: Type.Array(Provider) })),\n host(\n 'models.list',\n '/models',\n 'GET',\n Type.Object({ models: Type.Array(Type.Object({ value: Text, label: Text, group: Text })) }),\n ),\n host('providers.logout', '/providers/{providerId}', 'DELETE', ApiOkSchema),\n host('logins.create', '/logins', 'POST', Flow, {\n body: body(Type.Object({ providerId: Text, type: AuthType })),\n responses: jsonApiResponses(Flow, 201),\n }),\n host('logins.get', '/logins/{flowId}', 'GET', Flow),\n host('logins.cancel', '/logins/{flowId}', 'DELETE', Flow),\n host('logins.answer', '/logins/{flowId}/answer', 'POST', Flow, {\n body: body(Type.Object({ promptId: Text, value: Text })),\n }),\n].map((route) => ({ ...route, basePath: 'po' }));\nconst Source = Type.Union([\n Type.Literal('extension'),\n Type.Literal('mcp'),\n Type.Literal('plugin'),\n Type.Literal('core'),\n]);\nconst Detail = Type.Union([\n Type.Object({\n itemKind: Type.Literal('tool'),\n name: Text,\n owner: Text,\n source: Source,\n active: Flag,\n tokens: Type.Object({ schemaTokens: NumberValue, promptTokens: NumberValue, totalTokens: NumberValue }),\n description: Optional(Text),\n promptSnippet: Optional(Text),\n promptGuidelines: Optional(Strings),\n parameters: Optional(Json),\n }),\n Type.Object({\n itemKind: Type.Literal('skill'),\n name: Text,\n owner: Text,\n source: Source,\n active: Type.Literal(true),\n tokens: NumberValue,\n description: Text,\n filePath: Optional(Text),\n modelInvocable: Flag,\n }),\n Type.Object({\n itemKind: Type.Literal('prompt'),\n name: Type.Literal('system'),\n tokens: NumberValue,\n stage: Type.Union([Type.Literal('base'), Type.Literal('effective')]),\n text: Text,\n }),\n]);\nconst ContextProjection = Type.Object({\n version: Type.Literal(1),\n revision: NumberValue,\n selection: Type.Object({ majorMode: Text, domains: Strings, profile: Optional(Text) }),\n groups: Type.Array(\n Type.Object({\n id: Text,\n label: Text,\n kind: Type.Union([Type.Literal('major'), Type.Literal('minor'), Type.Literal('domain'), Type.Literal('core')]),\n items: Type.Array(\n Type.Object({\n name: Text,\n itemKind: Type.Union([Type.Literal('tool'), Type.Literal('skill')]),\n source: Source,\n owner: Text,\n tokens: NumberValue,\n active: Flag,\n }),\n ),\n tokens: NumberValue,\n inactiveTokens: NumberValue,\n }),\n ),\n totalTokens: NumberValue,\n inactiveTokens: NumberValue,\n systemPrompt: Optional(\n Type.Object({\n tokens: NumberValue,\n stage: Type.Union([Type.Literal('base'), Type.Literal('effective')]),\n }),\n ),\n estimator: Type.Literal('gpt-tokenizer'),\n});\nexport const sessionHttpContracts: PoHttpContract[] = [\n {\n ...host('context.current', CURRENT_ROUTE, 'GET', ContextProjection),\n scope: 'session',\n basePath: API_BASE_PATH,\n },\n {\n ...host('context.item', ITEM_ROUTE, 'GET', Type.Object({ revision: NumberValue, item: Detail }), {\n parameters: [\n query('kind', Type.Union([Type.Literal('tool'), Type.Literal('skill'), Type.Literal('prompt')]), true),\n query('name', Text, true),\n ],\n }),\n scope: 'session',\n basePath: API_BASE_PATH,\n },\n {\n ...host('files.complete', '/', 'GET', Type.Object({ files: Strings }), {\n parameters: [query('q', Type.String({ maxLength: 256 }))],\n }),\n scope: 'session',\n basePath: 'files',\n },\n];\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"httpApiContracts.mjs","names":[],"sources":["../../../src/schemas/httpApiContracts.ts"],"sourcesContent":["import { Type, type TSchema } from 'typebox';\n\nimport { API_BASE_PATH, CURRENT_ROUTE, ITEM_ROUTE } from '../constants/contextApi';\nimport type { PoHttpContract } from './apiContracts';\n\nconst Text = Type.String();\nconst Optional = Type.Optional;\nconst Strings = Type.Array(Text);\nconst Flag = Type.Boolean();\nconst NumberValue = Type.Number();\nexport const ApiErrorSchema = Type.Object({ error: Text, hash: Optional(Text) });\nexport const ApiOkSchema = Type.Object({ ok: Type.Literal(true) });\nconst Json = Type.Unknown({ description: 'Value whose schema is supplied by the selected runtime contribution.' });\n\n/** Common JSON response construction; status and payload remain explicit at the declaration. */\nexport function jsonApiResponses(schema: object | boolean, status = 200): PoHttpContract['responses'] {\n return {\n [status]: { description: 'Successful response', contentType: 'application/json', schema },\n '400': { description: 'Invalid request', schema: ApiErrorSchema },\n '401': { description: 'Authentication required', schema: ApiErrorSchema },\n '403': { description: 'Request is not authorized', schema: ApiErrorSchema },\n '404': { description: 'Resource or capability unavailable', schema: ApiErrorSchema },\n '409': { description: 'Conflicting state', schema: ApiErrorSchema },\n '422': { description: 'Invalid operation', schema: ApiErrorSchema },\n '500': { description: 'Host operation failed', schema: ApiErrorSchema },\n '502': { description: 'Provider failed', schema: ApiErrorSchema },\n '503': { description: 'Service unavailable', schema: ApiErrorSchema },\n };\n}\nexport const WebCompositionSchema = Type.Object({\n id: Text,\n scope: Type.Union([Type.Literal('global'), Type.Literal('workspace'), Type.Literal('session')]),\n revision: NumberValue,\n manifestUrl: Text,\n rawAssetBaseUrl: Text,\n verifiedAssetBaseUrl: Text,\n pluginEntries: Type.Array(Type.Tuple([Text, Text])),\n assetPaths: Strings,\n stylePaths: Strings,\n channels: Strings,\n});\nexport const NativeCompositionSchema = Type.Object({\n id: Text,\n scope: Type.Union([Type.Literal('global'), Type.Literal('workspace'), Type.Literal('session')]),\n revision: NumberValue,\n manifestUrl: Text,\n rawAssetBaseUrl: Text,\n entryPath: Text,\n channels: Strings,\n plugins: Strings,\n});\n/** One platform's signed over-the-air app bundle; `fingerprint` names the binaries it runs on. */\nconst NativeAppSchema = Type.Object({\n id: Text,\n revision: NumberValue,\n manifestUrl: Text,\n rawAssetBaseUrl: Text,\n fingerprint: Text,\n});\n/** A configured template id and the mount whose compositions offer it. */\nconst TemplateDecisionSchema = Type.Object({\n id: Optional(Text),\n mount: Type.Union([\n Type.Object({ scope: Type.Literal('global') }),\n Type.Object({ scope: Type.Literal('workspace'), workspaceId: Text }),\n ]),\n});\nexport const SessionSummarySchema = Type.Object({\n id: Text,\n workspaceId: Optional(Text),\n webComposition: Optional(WebCompositionSchema),\n nativeComposition: Optional(NativeCompositionSchema),\n name: Text,\n cwd: Text,\n createdAt: Text,\n updatedAt: Text,\n phase: Type.Union([Type.Literal('idle'), Type.Literal('turn'), Type.Literal('compaction'), Type.Literal('retry')]),\n phaseSince: Text,\n attach: Type.Literal('attached'),\n pendingMessageCount: NumberValue,\n everPrompted: Flag,\n awaitingInput: Flag,\n lastSettledAt: Optional(Text),\n git: Optional(Type.Object({ branch: Text, dirty: Flag })),\n profile: Optional(Type.Object({ name: Text, displayName: Optional(Text), iconVersion: Optional(Text) })),\n parentSessionId: Optional(Text),\n sessionProvenance: Optional(Text),\n /** The line the session's extension published about background work it runs. */\n activity: Optional(Type.Object({ label: Text, attention: Optional(Flag), since: Optional(Text) })),\n pendingSetups: Optional(\n Type.Array(\n Type.Object({\n id: Text,\n name: Text,\n createdAt: Text,\n cwd: Optional(Text),\n setupKind: Optional(Type.Union([Type.Literal('managed-worktree'), Type.Literal('existing-directory')])),\n status: Optional(\n Type.Union([Type.Literal('provisioning'), Type.Literal('failed'), Type.Literal('interrupted')]),\n ),\n errorCode: Optional(\n Type.Union([Type.Literal('SESSION_WORKTREE_PROVISION_FAILED'), Type.Literal('SESSION_UNAVAILABLE')]),\n ),\n }),\n ),\n ),\n groups: Optional(Strings),\n backgroundWorkActive: Optional(Flag),\n /** Present and true for a recorded session the server has not reopened yet. */\n dormant: Optional(Flag),\n});\nexport const WorkspaceSchema = Type.Object({ id: Text, root: Text, name: Optional(Text), available: Optional(Flag) });\nconst SavedSession = Type.Object({\n id: Text,\n name: Optional(Text),\n firstMessage: Text,\n createdAt: Text,\n updatedAt: Text,\n});\nconst query = (\n name: string,\n schema: TSchema = Text,\n required = false,\n): NonNullable<PoHttpContract['parameters']>[number] => ({ name, in: 'query', required, schema });\nconst body = (schema: TSchema): NonNullable<PoHttpContract['body']> => ({\n contentType: 'application/json',\n required: true,\n schema,\n});\nconst host = (\n id: string,\n path: string,\n method: PoHttpContract['method'],\n result: TSchema,\n extra: Partial<PoHttpContract> = {},\n): PoHttpContract => ({\n id,\n path,\n method,\n scope: 'global',\n authentication: 'owner',\n description: id,\n responses: jsonApiResponses(result),\n ...extra,\n});\nconst Binary = Type.String({ contentEncoding: 'binary' });\nexport const headlessHttpContracts: PoHttpContract[] = [\n host(\n 'health',\n '/api/health',\n 'GET',\n Type.Object({\n ok: Type.Literal(true),\n role: Type.Literal('hub'),\n protocol: Type.Literal(1),\n sessions: NumberValue,\n }),\n { authentication: 'none' },\n ),\n host('telemetry.browser', '/api/telemetry/browser', 'POST', ApiOkSchema, {\n body: body(\n Type.Object({\n v: Type.Literal(1),\n events: Type.Array(\n Type.Object({\n name: Type.String({ pattern: '^web\\\\.browser\\\\.[a-z_]{1,40}$' }),\n duration_ms: Optional(NumberValue),\n count: Optional(NumberValue),\n }),\n { maxItems: 10 },\n ),\n }),\n ),\n }),\n host(\n 'compositions',\n '/api/compositions',\n 'GET',\n Type.Object({\n global: Optional(WebCompositionSchema),\n nativeGlobal: Optional(NativeCompositionSchema),\n /** App bundles by platform, which a phone loads only when its own fingerprint matches. */\n nativeApp: Optional(Type.Record(Text, NativeAppSchema)),\n publicKey: Optional(Text),\n shell: Optional(Type.Object({ publicKey: Text, revision: NumberValue })),\n template: Optional(TemplateDecisionSchema),\n /** The phone app's `native.template` choice, resolved the same way. */\n nativeTemplate: Optional(TemplateDecisionSchema),\n workspaces: Type.Array(\n Type.Object({\n id: Text,\n root: Text,\n webComposition: Optional(WebCompositionSchema),\n nativeComposition: Optional(NativeCompositionSchema),\n }),\n ),\n }),\n ),\n host('directories', '/api/directories', 'GET', Type.Object({ directories: Strings }), { parameters: [query('q')] }),\n host(\n 'directories.children',\n '/api/directories/children',\n 'GET',\n Type.Object({ path: Text, parent: Optional(Text), directories: Strings }),\n { parameters: [query('path')] },\n ),\n host('directories.po', '/api/directories/po', 'GET', Type.Object({ directories: Strings })),\n host(\n 'sessions.list',\n '/api/workspaces/{workspaceId}/sessions',\n 'GET',\n Type.Object({ sessions: Type.Array(SessionSummarySchema) }),\n ),\n host('sessions.create', '/api/workspaces/{workspaceId}/sessions', 'POST', Type.Object({ sessionId: Text }), {\n body: body(Type.Object({ name: Optional(Text) })),\n responses: jsonApiResponses(Type.Object({ sessionId: Text }), 201),\n }),\n host('sessions.get', '/api/workspaces/{workspaceId}/sessions/{sessionId}', 'GET', SessionSummarySchema),\n host('sessions.delete', '/api/workspaces/{workspaceId}/sessions/{sessionId}', 'DELETE', ApiOkSchema),\n host(\n 'sessions.history',\n '/api/workspaces/{workspaceId}/sessions/{sessionId}/history',\n 'GET',\n Type.Object({ sessions: Type.Array(SavedSession) }),\n { availability: 'Host provides sessionHistory' },\n ),\n host('sessions.restart', '/api/workspaces/{workspaceId}/sessions/{sessionId}/restart', 'POST', ApiOkSchema, {\n availability: 'Host provides restartSession',\n }),\n host('sessions.revive', '/api/workspaces/{workspaceId}/sessions/{sessionId}/revive', 'POST', ApiOkSchema, {\n availability: 'Host provides reviveSession',\n }),\n host(\n 'sessions.resume',\n '/api/workspaces/{workspaceId}/sessions/{sessionId}/resume',\n 'POST',\n Type.Object({ sessionId: Text }),\n {\n availability: 'Host provides resumeSession',\n body: body(Type.Object({ targetSessionId: Type.String({ pattern: '^[A-Za-z0-9_-]+$' }) })),\n },\n ),\n host('sessions.file', '/api/workspaces/{workspaceId}/sessions/{sessionId}/file', 'GET', Binary, {\n parameters: [query('path', Text, true)],\n responses: {\n ...jsonApiResponses(Binary),\n '200': { description: 'File bytes, MIME type follows the file extension', contentType: '*/*', schema: Binary },\n },\n }),\n host('workspaces.list', '/api/workspaces', 'GET', Type.Object({ workspaces: Type.Array(WorkspaceSchema) })),\n host('workspaces.admit', '/api/workspaces', 'POST', Type.Object({ workspace: WorkspaceSchema }), {\n body: body(Type.Object({ root: Optional(Text), name: Optional(Text) })),\n responses: jsonApiResponses(Type.Object({ workspace: WorkspaceSchema }), 201),\n }),\n host('workspaces.get', '/api/workspaces/{workspaceId}', 'GET', Type.Object({ workspace: WorkspaceSchema })),\n host(\n 'workspaces.history',\n '/api/workspaces/{workspaceId}/history',\n 'GET',\n Type.Object({ sessions: Type.Array(SavedSession) }),\n {\n availability: 'Host provides workspaceHistory',\n },\n ),\n host('workspaces.resume', '/api/workspaces/{workspaceId}/resume', 'POST', Type.Object({ sessionId: Text }), {\n availability: 'Host provides resumeWorkspaceSession',\n body: body(Type.Object({ targetSessionId: Type.String({ pattern: '^[A-Za-z0-9_-]+$' }) })),\n }),\n host('workspaces.remove', '/api/workspaces/{workspaceId}', 'DELETE', ApiOkSchema),\n];\nconst AuthType = Type.Union([Type.Literal('api_key'), Type.Literal('oauth')]);\nconst Provider = Type.Object({\n id: Text,\n name: Text,\n methods: Type.Array(Type.Object({ type: AuthType, label: Text })),\n authenticated: Optional(Type.Object({ type: AuthType, source: Optional(Text) })),\n});\nconst LoginEvent = Type.Union([\n Type.Object({\n type: Type.Literal('info'),\n message: Text,\n links: Optional(Type.Array(Type.Object({ url: Text, label: Optional(Text) }))),\n }),\n Type.Object({ type: Type.Literal('auth_url'), url: Text, instructions: Optional(Text) }),\n Type.Object({\n type: Type.Literal('device_code'),\n userCode: Text,\n verificationUri: Text,\n intervalSeconds: Optional(NumberValue),\n expiresInSeconds: Optional(NumberValue),\n }),\n Type.Object({ type: Type.Literal('progress'), message: Text }),\n]);\nexport const LoginFlowSchema = Type.Object({\n id: Text,\n providerId: Text,\n providerName: Text,\n type: AuthType,\n status: Type.Union([\n Type.Literal('running'),\n Type.Literal('succeeded'),\n Type.Literal('failed'),\n Type.Literal('cancelled'),\n ]),\n events: Type.Array(LoginEvent),\n prompt: Optional(\n Type.Object({\n id: Text,\n type: Type.Union([\n Type.Literal('text'),\n Type.Literal('secret'),\n Type.Literal('select'),\n Type.Literal('manual_code'),\n ]),\n message: Text,\n placeholder: Optional(Text),\n options: Optional(Type.Array(Type.Object({ id: Text, label: Text, description: Optional(Text) }))),\n }),\n ),\n remote: Optional(Flag),\n error: Optional(Text),\n});\nconst Flow = Type.Object({ flow: LoginFlowSchema });\nexport const machineHttpContracts: PoHttpContract[] = [\n host('providers.list', '/providers', 'GET', Type.Object({ providers: Type.Array(Provider) })),\n host(\n 'models.list',\n '/models',\n 'GET',\n Type.Object({ models: Type.Array(Type.Object({ value: Text, label: Text, group: Text })) }),\n ),\n host('providers.logout', '/providers/{providerId}', 'DELETE', ApiOkSchema),\n host('logins.create', '/logins', 'POST', Flow, {\n body: body(Type.Object({ providerId: Text, type: AuthType })),\n responses: jsonApiResponses(Flow, 201),\n }),\n host('logins.get', '/logins/{flowId}', 'GET', Flow),\n host('logins.cancel', '/logins/{flowId}', 'DELETE', Flow),\n host('logins.answer', '/logins/{flowId}/answer', 'POST', Flow, {\n body: body(Type.Object({ promptId: Text, value: Text })),\n }),\n].map((route) => ({ ...route, basePath: 'po' }));\nconst Source = Type.Union([\n Type.Literal('extension'),\n Type.Literal('mcp'),\n Type.Literal('plugin'),\n Type.Literal('core'),\n]);\nconst Detail = Type.Union([\n Type.Object({\n itemKind: Type.Literal('tool'),\n name: Text,\n owner: Text,\n source: Source,\n active: Flag,\n tokens: Type.Object({ schemaTokens: NumberValue, promptTokens: NumberValue, totalTokens: NumberValue }),\n description: Optional(Text),\n promptSnippet: Optional(Text),\n promptGuidelines: Optional(Strings),\n parameters: Optional(Json),\n }),\n Type.Object({\n itemKind: Type.Literal('skill'),\n name: Text,\n owner: Text,\n source: Source,\n active: Type.Literal(true),\n tokens: NumberValue,\n description: Text,\n filePath: Optional(Text),\n modelInvocable: Flag,\n }),\n Type.Object({\n itemKind: Type.Literal('prompt'),\n name: Type.Literal('system'),\n tokens: NumberValue,\n stage: Type.Union([Type.Literal('base'), Type.Literal('effective')]),\n text: Text,\n }),\n]);\nconst ContextProjection = Type.Object({\n version: Type.Literal(1),\n revision: NumberValue,\n selection: Type.Object({ majorMode: Text, domains: Strings, profile: Optional(Text) }),\n groups: Type.Array(\n Type.Object({\n id: Text,\n label: Text,\n kind: Type.Union([Type.Literal('major'), Type.Literal('minor'), Type.Literal('domain'), Type.Literal('core')]),\n items: Type.Array(\n Type.Object({\n name: Text,\n itemKind: Type.Union([Type.Literal('tool'), Type.Literal('skill')]),\n source: Source,\n owner: Text,\n tokens: NumberValue,\n active: Flag,\n }),\n ),\n tokens: NumberValue,\n inactiveTokens: NumberValue,\n }),\n ),\n totalTokens: NumberValue,\n inactiveTokens: NumberValue,\n systemPrompt: Optional(\n Type.Object({\n tokens: NumberValue,\n stage: Type.Union([Type.Literal('base'), Type.Literal('effective')]),\n }),\n ),\n estimator: Type.Literal('gpt-tokenizer'),\n});\nexport const sessionHttpContracts: PoHttpContract[] = [\n {\n ...host('context.current', CURRENT_ROUTE, 'GET', ContextProjection),\n scope: 'session',\n basePath: API_BASE_PATH,\n },\n {\n ...host('context.item', ITEM_ROUTE, 'GET', Type.Object({ revision: NumberValue, item: Detail }), {\n parameters: [\n query('kind', Type.Union([Type.Literal('tool'), Type.Literal('skill'), Type.Literal('prompt')]), true),\n query('name', Text, true),\n ],\n }),\n scope: 'session',\n basePath: API_BASE_PATH,\n },\n {\n ...host('files.complete', '/', 'GET', Type.Object({ files: Strings }), {\n parameters: [query('q', Type.String({ maxLength: 256 }))],\n }),\n scope: 'session',\n basePath: 'files',\n },\n];\n"],"mappings":"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"}
|
|
@@ -13,9 +13,18 @@ const PoMcpProjectionAllowlistSchema = typebox.Type.Object({
|
|
|
13
13
|
servers: typebox.Type.Optional(typebox.Type.Array(typebox.Type.String({ minLength: 1 }))),
|
|
14
14
|
proxy: typebox.Type.Optional(typebox.Type.Array(typebox.Type.String({ minLength: 1 })))
|
|
15
15
|
}, { additionalProperties: false });
|
|
16
|
+
/**
|
|
17
|
+
* The person's own MCP config in their Po home, loaded into every repository's sessions.
|
|
18
|
+
* A repository entry with the same name wins over it.
|
|
19
|
+
*/
|
|
20
|
+
const PO_USER_MCP_CONFIG_FILE = "mcp.json";
|
|
16
21
|
const PoMcpNativeProjectionSourceSchema = typebox.Type.Object({
|
|
17
22
|
sourceId: typebox.Type.String({ minLength: 1 }),
|
|
18
|
-
owner: typebox.Type.Union([
|
|
23
|
+
owner: typebox.Type.Union([
|
|
24
|
+
typebox.Type.Literal("user"),
|
|
25
|
+
typebox.Type.Literal("repository"),
|
|
26
|
+
typebox.Type.Literal("plugin")
|
|
27
|
+
]),
|
|
19
28
|
format: typebox.Type.Literal("native"),
|
|
20
29
|
configPath: typebox.Type.String({ minLength: 1 }),
|
|
21
30
|
contentDigest: typebox.Type.String({ minLength: 1 })
|
|
@@ -103,6 +112,7 @@ exports.AGENT_PLUGIN_MCP_SCHEMA_URL = AGENT_PLUGIN_MCP_SCHEMA_URL;
|
|
|
103
112
|
exports.PO_MCP_PROJECTION_RESOLVER_SERVICE = PO_MCP_PROJECTION_RESOLVER_SERVICE;
|
|
104
113
|
exports.PO_MCP_PROJECTION_SERVICE = PO_MCP_PROJECTION_SERVICE;
|
|
105
114
|
exports.PO_MCP_PROJECTION_VERSION = PO_MCP_PROJECTION_VERSION;
|
|
115
|
+
exports.PO_USER_MCP_CONFIG_FILE = PO_USER_MCP_CONFIG_FILE;
|
|
106
116
|
exports.PoMcpAgentPluginProjectionSourceSchema = PoMcpAgentPluginProjectionSourceSchema;
|
|
107
117
|
exports.PoMcpNativeProjectionSourceSchema = PoMcpNativeProjectionSourceSchema;
|
|
108
118
|
exports.PoMcpProjectionAllowlistSchema = PoMcpProjectionAllowlistSchema;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcpProjection.cjs","names":["Type","Errors","Check"],"sources":["../../../src/schemas/mcpProjection.ts"],"sourcesContent":["import type { Context } from '@deepseek-ai/cordis';\nimport { type Static, Type } from 'typebox';\nimport { Check, Errors } from 'typebox/value';\n\n/** Schema revision of the neutral MCP projection shared across Po packages. */\nexport const PO_MCP_PROJECTION_VERSION = 1 as const;\n\n/** The portable MCP document revision represented by `agent-plugin-v1`. */\nexport const AGENT_PLUGIN_MCP_SCHEMA_URL = 'https://agent-plugins.org/schemas/1.0.0/mcp.schema.json' as const;\n\n/** Cordis service name for the immutable MCP projection of one Pi session. */\nexport const PO_MCP_PROJECTION_SERVICE = 'po/mcp-projection';\n/** Session-local provider for MCP resources selected by domain. */\nexport const PO_MCP_PROJECTION_RESOLVER_SERVICE = 'po/mcp-projection-resolver';\n\nexport const PoMcpProjectionAllowlistSchema = Type.Object(\n {\n servers: Type.Optional(Type.Array(Type.String({ minLength: 1 }))),\n proxy: Type.Optional(Type.Array(Type.String({ minLength: 1 }))),\n },\n { additionalProperties: false },\n);\n\nexport const PoMcpNativeProjectionSourceSchema = Type.Object(\n {\n sourceId: Type.String({ minLength: 1 }),\n owner: Type.Union([Type.Literal('repository'), Type.Literal('plugin')]),\n format: Type.Literal('native'),\n configPath: Type.String({ minLength: 1 }),\n contentDigest: Type.String({ minLength: 1 }),\n },\n { additionalProperties: false },\n);\n\nexport const PoMcpAgentPluginProjectionSourceSchema = Type.Object(\n {\n sourceId: Type.String({ minLength: 1 }),\n owner: Type.Literal('plugin'),\n format: Type.Literal('agent-plugin-v1'),\n configPath: Type.String({ minLength: 1 }),\n contentDigest: Type.String({ minLength: 1 }),\n pluginId: Type.String({ minLength: 1 }),\n pluginRoot: Type.String({ minLength: 1 }),\n pluginDataDirectory: Type.String({ minLength: 1 }),\n mcpSchemaUrl: Type.Literal(AGENT_PLUGIN_MCP_SCHEMA_URL),\n },\n { additionalProperties: false },\n);\n\n/** One native Po layer or one portable Agent Plugin MCP document. */\nexport const PoMcpProjectionSourceSchema = Type.Union([\n PoMcpNativeProjectionSourceSchema,\n PoMcpAgentPluginProjectionSourceSchema,\n]);\n\nexport const PoMcpProjectionSchema = Type.Object(\n {\n version: Type.Literal(PO_MCP_PROJECTION_VERSION),\n enabled: Type.Boolean(),\n /** Content identity supplied by the projection producer. */\n fingerprint: Type.String({ minLength: 1 }),\n repoRoot: Type.String({ minLength: 1 }),\n stagingDirectory: Type.String({ minLength: 1 }),\n generatedConfigPath: Type.Optional(Type.String({ minLength: 1 })),\n sources: Type.Array(PoMcpProjectionSourceSchema),\n allowlist: Type.Optional(PoMcpProjectionAllowlistSchema),\n },\n { additionalProperties: false },\n);\n\ntype DeepReadonly<TValue> = TValue extends (...args: never[]) => unknown\n ? TValue\n : TValue extends readonly (infer TItem)[]\n ? readonly DeepReadonly<TItem>[]\n : TValue extends object\n ? { readonly [TKey in keyof TValue]: DeepReadonly<TValue[TKey]> }\n : TValue;\n\nexport type PoMcpProjectionAllowlist = DeepReadonly<Static<typeof PoMcpProjectionAllowlistSchema>>;\nexport type PoMcpNativeProjectionSource = DeepReadonly<Static<typeof PoMcpNativeProjectionSourceSchema>>;\nexport type PoMcpAgentPluginProjectionSource = DeepReadonly<Static<typeof PoMcpAgentPluginProjectionSourceSchema>>;\nexport type PoMcpProjectionSource = DeepReadonly<Static<typeof PoMcpProjectionSourceSchema>>;\nexport type PoMcpProjectionSourceFormat = PoMcpProjectionSource['format'];\nexport type PoMcpProjection = DeepReadonly<Static<typeof PoMcpProjectionSchema>>;\n\nexport interface PoMcpProjectionService {\n readonly sessionId: string;\n readonly generation: string;\n getSnapshot(): PoMcpProjection;\n}\n\nexport interface PoMcpProjectionResolverService {\n resolve(domains: readonly string[]): Promise<{ projection: PoMcpProjection; cleanup(): Promise<void> }>;\n}\n\nexport interface PoMcpProjectionServiceInput {\n readonly sessionId: string;\n readonly generation: string;\n readonly projection: PoMcpProjection;\n}\n\nexport interface DisabledPoMcpProjectionInput {\n readonly repoRoot: string;\n readonly stagingDirectory: string;\n}\n\nfunction deepFreeze<TValue>(value: TValue): DeepReadonly<TValue> {\n if (typeof value !== 'object' || value === null || Object.isFrozen(value)) {\n return value as DeepReadonly<TValue>;\n }\n for (const child of Object.values(value)) deepFreeze(child);\n return Object.freeze(value) as DeepReadonly<TValue>;\n}\n\nfunction projectionError(value: unknown): Error {\n const [first] = Errors(PoMcpProjectionSchema, value);\n return new Error(`Invalid Po MCP projection${first ? ` at ${first.instancePath || '/'}: ${first.message}` : ''}`);\n}\n\n/** Runtime guard used when a projection crosses a JSON persistence boundary. */\nexport function isPoMcpProjection(value: unknown): value is PoMcpProjection {\n return Check(PoMcpProjectionSchema, value);\n}\n\n/**\n * Builds the explicit fail-closed state used when a Po session has no MCP\n * projection. The root and staging path remain visible for diagnostics, while\n * the empty source list prevents an MCP consumer from falling back to cwd.\n */\nexport function createDisabledPoMcpProjection({\n repoRoot,\n stagingDirectory,\n}: DisabledPoMcpProjectionInput): PoMcpProjection {\n return deepFreeze({\n version: PO_MCP_PROJECTION_VERSION,\n enabled: false,\n // Staging is per-process mutable state and must not change content identity\n // when a synced projection is rebased into a private run directory.\n fingerprint: JSON.stringify({ version: PO_MCP_PROJECTION_VERSION, enabled: false, repoRoot }),\n repoRoot,\n stagingDirectory,\n sources: [],\n });\n}\n\n/** Creates a generation-bound, immutable Cordis service value. */\nexport function createPoMcpProjectionService({\n sessionId,\n generation,\n projection,\n}: PoMcpProjectionServiceInput): PoMcpProjectionService {\n if (!sessionId) throw new Error('Po MCP projection service requires a session id');\n if (!generation) throw new Error('Po MCP projection service requires a generation');\n if (!isPoMcpProjection(projection)) throw projectionError(projection);\n\n const snapshot = deepFreeze(structuredClone(projection)) as PoMcpProjection;\n return Object.freeze({\n sessionId,\n generation,\n getSnapshot: () => snapshot,\n });\n}\n\n/** Reads the MCP projection provider from one Po session's Cordis root. */\nexport function readPoMcpProjectionService(root: Context): PoMcpProjectionService | undefined {\n return root.get(PO_MCP_PROJECTION_SERVICE) as PoMcpProjectionService | undefined;\n}\n\n/** Reads the MCP projection provider or reports that the Po session is incomplete. */\nexport function requirePoMcpProjectionService(root: Context): PoMcpProjectionService {\n const service = readPoMcpProjectionService(root);\n if (!service) throw new Error('Po MCP projection is unavailable. Load the Po Config core.');\n return service;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcpProjection.cjs","names":["Type","Errors","Check"],"sources":["../../../src/schemas/mcpProjection.ts"],"sourcesContent":["import type { Context } from '@deepseek-ai/cordis';\nimport { type Static, Type } from 'typebox';\nimport { Check, Errors } from 'typebox/value';\n\n/** Schema revision of the neutral MCP projection shared across Po packages. */\nexport const PO_MCP_PROJECTION_VERSION = 1 as const;\n\n/** The portable MCP document revision represented by `agent-plugin-v1`. */\nexport const AGENT_PLUGIN_MCP_SCHEMA_URL = 'https://agent-plugins.org/schemas/1.0.0/mcp.schema.json' as const;\n\n/** Cordis service name for the immutable MCP projection of one Pi session. */\nexport const PO_MCP_PROJECTION_SERVICE = 'po/mcp-projection';\n/** Session-local provider for MCP resources selected by domain. */\nexport const PO_MCP_PROJECTION_RESOLVER_SERVICE = 'po/mcp-projection-resolver';\n\nexport const PoMcpProjectionAllowlistSchema = Type.Object(\n {\n servers: Type.Optional(Type.Array(Type.String({ minLength: 1 }))),\n proxy: Type.Optional(Type.Array(Type.String({ minLength: 1 }))),\n },\n { additionalProperties: false },\n);\n\n/**\n * The person's own MCP config in their Po home, loaded into every repository's sessions.\n * A repository entry with the same name wins over it.\n */\nexport const PO_USER_MCP_CONFIG_FILE = 'mcp.json';\n\nexport const PoMcpNativeProjectionSourceSchema = Type.Object(\n {\n sourceId: Type.String({ minLength: 1 }),\n owner: Type.Union([Type.Literal('user'), Type.Literal('repository'), Type.Literal('plugin')]),\n format: Type.Literal('native'),\n configPath: Type.String({ minLength: 1 }),\n contentDigest: Type.String({ minLength: 1 }),\n },\n { additionalProperties: false },\n);\n\nexport const PoMcpAgentPluginProjectionSourceSchema = Type.Object(\n {\n sourceId: Type.String({ minLength: 1 }),\n owner: Type.Literal('plugin'),\n format: Type.Literal('agent-plugin-v1'),\n configPath: Type.String({ minLength: 1 }),\n contentDigest: Type.String({ minLength: 1 }),\n pluginId: Type.String({ minLength: 1 }),\n pluginRoot: Type.String({ minLength: 1 }),\n pluginDataDirectory: Type.String({ minLength: 1 }),\n mcpSchemaUrl: Type.Literal(AGENT_PLUGIN_MCP_SCHEMA_URL),\n },\n { additionalProperties: false },\n);\n\n/** One native Po layer or one portable Agent Plugin MCP document. */\nexport const PoMcpProjectionSourceSchema = Type.Union([\n PoMcpNativeProjectionSourceSchema,\n PoMcpAgentPluginProjectionSourceSchema,\n]);\n\nexport const PoMcpProjectionSchema = Type.Object(\n {\n version: Type.Literal(PO_MCP_PROJECTION_VERSION),\n enabled: Type.Boolean(),\n /** Content identity supplied by the projection producer. */\n fingerprint: Type.String({ minLength: 1 }),\n repoRoot: Type.String({ minLength: 1 }),\n stagingDirectory: Type.String({ minLength: 1 }),\n generatedConfigPath: Type.Optional(Type.String({ minLength: 1 })),\n sources: Type.Array(PoMcpProjectionSourceSchema),\n allowlist: Type.Optional(PoMcpProjectionAllowlistSchema),\n },\n { additionalProperties: false },\n);\n\ntype DeepReadonly<TValue> = TValue extends (...args: never[]) => unknown\n ? TValue\n : TValue extends readonly (infer TItem)[]\n ? readonly DeepReadonly<TItem>[]\n : TValue extends object\n ? { readonly [TKey in keyof TValue]: DeepReadonly<TValue[TKey]> }\n : TValue;\n\nexport type PoMcpProjectionAllowlist = DeepReadonly<Static<typeof PoMcpProjectionAllowlistSchema>>;\nexport type PoMcpNativeProjectionSource = DeepReadonly<Static<typeof PoMcpNativeProjectionSourceSchema>>;\nexport type PoMcpAgentPluginProjectionSource = DeepReadonly<Static<typeof PoMcpAgentPluginProjectionSourceSchema>>;\nexport type PoMcpProjectionSource = DeepReadonly<Static<typeof PoMcpProjectionSourceSchema>>;\nexport type PoMcpProjectionSourceFormat = PoMcpProjectionSource['format'];\nexport type PoMcpProjection = DeepReadonly<Static<typeof PoMcpProjectionSchema>>;\n\nexport interface PoMcpProjectionService {\n readonly sessionId: string;\n readonly generation: string;\n getSnapshot(): PoMcpProjection;\n}\n\nexport interface PoMcpProjectionResolverService {\n resolve(domains: readonly string[]): Promise<{ projection: PoMcpProjection; cleanup(): Promise<void> }>;\n}\n\nexport interface PoMcpProjectionServiceInput {\n readonly sessionId: string;\n readonly generation: string;\n readonly projection: PoMcpProjection;\n}\n\nexport interface DisabledPoMcpProjectionInput {\n readonly repoRoot: string;\n readonly stagingDirectory: string;\n}\n\nfunction deepFreeze<TValue>(value: TValue): DeepReadonly<TValue> {\n if (typeof value !== 'object' || value === null || Object.isFrozen(value)) {\n return value as DeepReadonly<TValue>;\n }\n for (const child of Object.values(value)) deepFreeze(child);\n return Object.freeze(value) as DeepReadonly<TValue>;\n}\n\nfunction projectionError(value: unknown): Error {\n const [first] = Errors(PoMcpProjectionSchema, value);\n return new Error(`Invalid Po MCP projection${first ? ` at ${first.instancePath || '/'}: ${first.message}` : ''}`);\n}\n\n/** Runtime guard used when a projection crosses a JSON persistence boundary. */\nexport function isPoMcpProjection(value: unknown): value is PoMcpProjection {\n return Check(PoMcpProjectionSchema, value);\n}\n\n/**\n * Builds the explicit fail-closed state used when a Po session has no MCP\n * projection. The root and staging path remain visible for diagnostics, while\n * the empty source list prevents an MCP consumer from falling back to cwd.\n */\nexport function createDisabledPoMcpProjection({\n repoRoot,\n stagingDirectory,\n}: DisabledPoMcpProjectionInput): PoMcpProjection {\n return deepFreeze({\n version: PO_MCP_PROJECTION_VERSION,\n enabled: false,\n // Staging is per-process mutable state and must not change content identity\n // when a synced projection is rebased into a private run directory.\n fingerprint: JSON.stringify({ version: PO_MCP_PROJECTION_VERSION, enabled: false, repoRoot }),\n repoRoot,\n stagingDirectory,\n sources: [],\n });\n}\n\n/** Creates a generation-bound, immutable Cordis service value. */\nexport function createPoMcpProjectionService({\n sessionId,\n generation,\n projection,\n}: PoMcpProjectionServiceInput): PoMcpProjectionService {\n if (!sessionId) throw new Error('Po MCP projection service requires a session id');\n if (!generation) throw new Error('Po MCP projection service requires a generation');\n if (!isPoMcpProjection(projection)) throw projectionError(projection);\n\n const snapshot = deepFreeze(structuredClone(projection)) as PoMcpProjection;\n return Object.freeze({\n sessionId,\n generation,\n getSnapshot: () => snapshot,\n });\n}\n\n/** Reads the MCP projection provider from one Po session's Cordis root. */\nexport function readPoMcpProjectionService(root: Context): PoMcpProjectionService | undefined {\n return root.get(PO_MCP_PROJECTION_SERVICE) as PoMcpProjectionService | undefined;\n}\n\n/** Reads the MCP projection provider or reports that the Po session is incomplete. */\nexport function requirePoMcpProjectionService(root: Context): PoMcpProjectionService {\n const service = readPoMcpProjectionService(root);\n if (!service) throw new Error('Po MCP projection is unavailable. Load the Po Config core.');\n return service;\n}\n"],"mappings":"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"}
|
|
@@ -13,9 +13,14 @@ export declare const PoMcpProjectionAllowlistSchema: Type.TObject<{
|
|
|
13
13
|
servers: Type.TOptional<Type.TArray<Type.TString>>;
|
|
14
14
|
proxy: Type.TOptional<Type.TArray<Type.TString>>;
|
|
15
15
|
}>;
|
|
16
|
+
/**
|
|
17
|
+
* The person's own MCP config in their Po home, loaded into every repository's sessions.
|
|
18
|
+
* A repository entry with the same name wins over it.
|
|
19
|
+
*/
|
|
20
|
+
export declare const PO_USER_MCP_CONFIG_FILE = "mcp.json";
|
|
16
21
|
export declare const PoMcpNativeProjectionSourceSchema: Type.TObject<{
|
|
17
22
|
sourceId: Type.TString;
|
|
18
|
-
owner: Type.TUnion<[Type.TLiteral<"repository">, Type.TLiteral<"plugin">]>;
|
|
23
|
+
owner: Type.TUnion<[Type.TLiteral<"user">, Type.TLiteral<"repository">, Type.TLiteral<"plugin">]>;
|
|
19
24
|
format: Type.TLiteral<"native">;
|
|
20
25
|
configPath: Type.TString;
|
|
21
26
|
contentDigest: Type.TString;
|
|
@@ -34,7 +39,7 @@ export declare const PoMcpAgentPluginProjectionSourceSchema: Type.TObject<{
|
|
|
34
39
|
/** One native Po layer or one portable Agent Plugin MCP document. */
|
|
35
40
|
export declare const PoMcpProjectionSourceSchema: Type.TUnion<[Type.TObject<{
|
|
36
41
|
sourceId: Type.TString;
|
|
37
|
-
owner: Type.TUnion<[Type.TLiteral<"repository">, Type.TLiteral<"plugin">]>;
|
|
42
|
+
owner: Type.TUnion<[Type.TLiteral<"user">, Type.TLiteral<"repository">, Type.TLiteral<"plugin">]>;
|
|
38
43
|
format: Type.TLiteral<"native">;
|
|
39
44
|
configPath: Type.TString;
|
|
40
45
|
contentDigest: Type.TString;
|
|
@@ -59,7 +64,7 @@ export declare const PoMcpProjectionSchema: Type.TObject<{
|
|
|
59
64
|
generatedConfigPath: Type.TOptional<Type.TString>;
|
|
60
65
|
sources: Type.TArray<Type.TUnion<[Type.TObject<{
|
|
61
66
|
sourceId: Type.TString;
|
|
62
|
-
owner: Type.TUnion<[Type.TLiteral<"repository">, Type.TLiteral<"plugin">]>;
|
|
67
|
+
owner: Type.TUnion<[Type.TLiteral<"user">, Type.TLiteral<"repository">, Type.TLiteral<"plugin">]>;
|
|
63
68
|
format: Type.TLiteral<"native">;
|
|
64
69
|
configPath: Type.TString;
|
|
65
70
|
contentDigest: Type.TString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcpProjection.d.mts","names":[],"sources":["../../../src/schemas/mcpProjection.ts"],"mappings":";;;;qBAKa;;qBAGA;;qBAGA;;qBAEA;qBAEA,gCAA8B,KAAA
|
|
1
|
+
{"version":3,"file":"mcpProjection.d.mts","names":[],"sources":["../../../src/schemas/mcpProjection.ts"],"mappings":";;;;qBAKa;;qBAGA;;qBAGA;;qBAEA;qBAEA,gCAA8B,KAAA;;;;;;;;qBAY9B;qBAEA,mCAAiC,KAAA;;;;;;;qBAWjC,wCAAsC,KAAA;;;;;;;;;;;;qBAgBtC,6BAA2B,KAAA,QAAA,KAAA;;;;;;;;;;;;;;;;;qBAK3B,uBAAqB,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAe7B,aAAa,UAAU,oBAAmB,6BAC3C,SACA,+BAA+B,oBACpB,aAAa,WACtB,oCACc,cAAc,SAAS,aAAa,OAAO,YACvD;YAEI,2BAA2B,aAAa,cAAc;YACtD,8BAA8B,aAAa,cAAc;YACzD,mCAAmC,aAAa,cAAc;YAC9D,wBAAwB,aAAa,cAAc;YACnD,8BAA8B;YAC9B,kBAAkB,aAAa,cAAc;iBAExC;WACN;WACA;EACT,eAAe;;iBAGA;EACf,QAAQ,6BAA6B;IAAU,YAAY;IAAiB,WAAW;;;iBAGxE;WACN;WACA;WACA,YAAY;;iBAGN;WACN;WACA;;;wBAiBK,kBAAkB,iBAAiB,SAAS;;;;;;wBAS5C,gCACd,UACA,oBACC,+BAA+B;;wBAclB,+BACd,WACA,YACA,cACC,8BAA8B;;wBAcjB,2BAA2B,MAAM,UAAU;;wBAK3C,8BAA8B,MAAM,UAAU"}
|
|
@@ -13,9 +13,18 @@ const PoMcpProjectionAllowlistSchema = Type.Object({
|
|
|
13
13
|
servers: Type.Optional(Type.Array(Type.String({ minLength: 1 }))),
|
|
14
14
|
proxy: Type.Optional(Type.Array(Type.String({ minLength: 1 })))
|
|
15
15
|
}, { additionalProperties: false });
|
|
16
|
+
/**
|
|
17
|
+
* The person's own MCP config in their Po home, loaded into every repository's sessions.
|
|
18
|
+
* A repository entry with the same name wins over it.
|
|
19
|
+
*/
|
|
20
|
+
const PO_USER_MCP_CONFIG_FILE = "mcp.json";
|
|
16
21
|
const PoMcpNativeProjectionSourceSchema = Type.Object({
|
|
17
22
|
sourceId: Type.String({ minLength: 1 }),
|
|
18
|
-
owner: Type.Union([
|
|
23
|
+
owner: Type.Union([
|
|
24
|
+
Type.Literal("user"),
|
|
25
|
+
Type.Literal("repository"),
|
|
26
|
+
Type.Literal("plugin")
|
|
27
|
+
]),
|
|
19
28
|
format: Type.Literal("native"),
|
|
20
29
|
configPath: Type.String({ minLength: 1 }),
|
|
21
30
|
contentDigest: Type.String({ minLength: 1 })
|
|
@@ -99,6 +108,6 @@ function requirePoMcpProjectionService(root) {
|
|
|
99
108
|
return service;
|
|
100
109
|
}
|
|
101
110
|
//#endregion
|
|
102
|
-
export { AGENT_PLUGIN_MCP_SCHEMA_URL, PO_MCP_PROJECTION_RESOLVER_SERVICE, PO_MCP_PROJECTION_SERVICE, PO_MCP_PROJECTION_VERSION, PoMcpAgentPluginProjectionSourceSchema, PoMcpNativeProjectionSourceSchema, PoMcpProjectionAllowlistSchema, PoMcpProjectionSchema, PoMcpProjectionSourceSchema, createDisabledPoMcpProjection, createPoMcpProjectionService, isPoMcpProjection, readPoMcpProjectionService, requirePoMcpProjectionService };
|
|
111
|
+
export { AGENT_PLUGIN_MCP_SCHEMA_URL, PO_MCP_PROJECTION_RESOLVER_SERVICE, PO_MCP_PROJECTION_SERVICE, PO_MCP_PROJECTION_VERSION, PO_USER_MCP_CONFIG_FILE, PoMcpAgentPluginProjectionSourceSchema, PoMcpNativeProjectionSourceSchema, PoMcpProjectionAllowlistSchema, PoMcpProjectionSchema, PoMcpProjectionSourceSchema, createDisabledPoMcpProjection, createPoMcpProjectionService, isPoMcpProjection, readPoMcpProjectionService, requirePoMcpProjectionService };
|
|
103
112
|
|
|
104
113
|
//# sourceMappingURL=mcpProjection.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcpProjection.mjs","names":[],"sources":["../../../src/schemas/mcpProjection.ts"],"sourcesContent":["import type { Context } from '@deepseek-ai/cordis';\nimport { type Static, Type } from 'typebox';\nimport { Check, Errors } from 'typebox/value';\n\n/** Schema revision of the neutral MCP projection shared across Po packages. */\nexport const PO_MCP_PROJECTION_VERSION = 1 as const;\n\n/** The portable MCP document revision represented by `agent-plugin-v1`. */\nexport const AGENT_PLUGIN_MCP_SCHEMA_URL = 'https://agent-plugins.org/schemas/1.0.0/mcp.schema.json' as const;\n\n/** Cordis service name for the immutable MCP projection of one Pi session. */\nexport const PO_MCP_PROJECTION_SERVICE = 'po/mcp-projection';\n/** Session-local provider for MCP resources selected by domain. */\nexport const PO_MCP_PROJECTION_RESOLVER_SERVICE = 'po/mcp-projection-resolver';\n\nexport const PoMcpProjectionAllowlistSchema = Type.Object(\n {\n servers: Type.Optional(Type.Array(Type.String({ minLength: 1 }))),\n proxy: Type.Optional(Type.Array(Type.String({ minLength: 1 }))),\n },\n { additionalProperties: false },\n);\n\nexport const PoMcpNativeProjectionSourceSchema = Type.Object(\n {\n sourceId: Type.String({ minLength: 1 }),\n owner: Type.Union([Type.Literal('repository'), Type.Literal('plugin')]),\n format: Type.Literal('native'),\n configPath: Type.String({ minLength: 1 }),\n contentDigest: Type.String({ minLength: 1 }),\n },\n { additionalProperties: false },\n);\n\nexport const PoMcpAgentPluginProjectionSourceSchema = Type.Object(\n {\n sourceId: Type.String({ minLength: 1 }),\n owner: Type.Literal('plugin'),\n format: Type.Literal('agent-plugin-v1'),\n configPath: Type.String({ minLength: 1 }),\n contentDigest: Type.String({ minLength: 1 }),\n pluginId: Type.String({ minLength: 1 }),\n pluginRoot: Type.String({ minLength: 1 }),\n pluginDataDirectory: Type.String({ minLength: 1 }),\n mcpSchemaUrl: Type.Literal(AGENT_PLUGIN_MCP_SCHEMA_URL),\n },\n { additionalProperties: false },\n);\n\n/** One native Po layer or one portable Agent Plugin MCP document. */\nexport const PoMcpProjectionSourceSchema = Type.Union([\n PoMcpNativeProjectionSourceSchema,\n PoMcpAgentPluginProjectionSourceSchema,\n]);\n\nexport const PoMcpProjectionSchema = Type.Object(\n {\n version: Type.Literal(PO_MCP_PROJECTION_VERSION),\n enabled: Type.Boolean(),\n /** Content identity supplied by the projection producer. */\n fingerprint: Type.String({ minLength: 1 }),\n repoRoot: Type.String({ minLength: 1 }),\n stagingDirectory: Type.String({ minLength: 1 }),\n generatedConfigPath: Type.Optional(Type.String({ minLength: 1 })),\n sources: Type.Array(PoMcpProjectionSourceSchema),\n allowlist: Type.Optional(PoMcpProjectionAllowlistSchema),\n },\n { additionalProperties: false },\n);\n\ntype DeepReadonly<TValue> = TValue extends (...args: never[]) => unknown\n ? TValue\n : TValue extends readonly (infer TItem)[]\n ? readonly DeepReadonly<TItem>[]\n : TValue extends object\n ? { readonly [TKey in keyof TValue]: DeepReadonly<TValue[TKey]> }\n : TValue;\n\nexport type PoMcpProjectionAllowlist = DeepReadonly<Static<typeof PoMcpProjectionAllowlistSchema>>;\nexport type PoMcpNativeProjectionSource = DeepReadonly<Static<typeof PoMcpNativeProjectionSourceSchema>>;\nexport type PoMcpAgentPluginProjectionSource = DeepReadonly<Static<typeof PoMcpAgentPluginProjectionSourceSchema>>;\nexport type PoMcpProjectionSource = DeepReadonly<Static<typeof PoMcpProjectionSourceSchema>>;\nexport type PoMcpProjectionSourceFormat = PoMcpProjectionSource['format'];\nexport type PoMcpProjection = DeepReadonly<Static<typeof PoMcpProjectionSchema>>;\n\nexport interface PoMcpProjectionService {\n readonly sessionId: string;\n readonly generation: string;\n getSnapshot(): PoMcpProjection;\n}\n\nexport interface PoMcpProjectionResolverService {\n resolve(domains: readonly string[]): Promise<{ projection: PoMcpProjection; cleanup(): Promise<void> }>;\n}\n\nexport interface PoMcpProjectionServiceInput {\n readonly sessionId: string;\n readonly generation: string;\n readonly projection: PoMcpProjection;\n}\n\nexport interface DisabledPoMcpProjectionInput {\n readonly repoRoot: string;\n readonly stagingDirectory: string;\n}\n\nfunction deepFreeze<TValue>(value: TValue): DeepReadonly<TValue> {\n if (typeof value !== 'object' || value === null || Object.isFrozen(value)) {\n return value as DeepReadonly<TValue>;\n }\n for (const child of Object.values(value)) deepFreeze(child);\n return Object.freeze(value) as DeepReadonly<TValue>;\n}\n\nfunction projectionError(value: unknown): Error {\n const [first] = Errors(PoMcpProjectionSchema, value);\n return new Error(`Invalid Po MCP projection${first ? ` at ${first.instancePath || '/'}: ${first.message}` : ''}`);\n}\n\n/** Runtime guard used when a projection crosses a JSON persistence boundary. */\nexport function isPoMcpProjection(value: unknown): value is PoMcpProjection {\n return Check(PoMcpProjectionSchema, value);\n}\n\n/**\n * Builds the explicit fail-closed state used when a Po session has no MCP\n * projection. The root and staging path remain visible for diagnostics, while\n * the empty source list prevents an MCP consumer from falling back to cwd.\n */\nexport function createDisabledPoMcpProjection({\n repoRoot,\n stagingDirectory,\n}: DisabledPoMcpProjectionInput): PoMcpProjection {\n return deepFreeze({\n version: PO_MCP_PROJECTION_VERSION,\n enabled: false,\n // Staging is per-process mutable state and must not change content identity\n // when a synced projection is rebased into a private run directory.\n fingerprint: JSON.stringify({ version: PO_MCP_PROJECTION_VERSION, enabled: false, repoRoot }),\n repoRoot,\n stagingDirectory,\n sources: [],\n });\n}\n\n/** Creates a generation-bound, immutable Cordis service value. */\nexport function createPoMcpProjectionService({\n sessionId,\n generation,\n projection,\n}: PoMcpProjectionServiceInput): PoMcpProjectionService {\n if (!sessionId) throw new Error('Po MCP projection service requires a session id');\n if (!generation) throw new Error('Po MCP projection service requires a generation');\n if (!isPoMcpProjection(projection)) throw projectionError(projection);\n\n const snapshot = deepFreeze(structuredClone(projection)) as PoMcpProjection;\n return Object.freeze({\n sessionId,\n generation,\n getSnapshot: () => snapshot,\n });\n}\n\n/** Reads the MCP projection provider from one Po session's Cordis root. */\nexport function readPoMcpProjectionService(root: Context): PoMcpProjectionService | undefined {\n return root.get(PO_MCP_PROJECTION_SERVICE) as PoMcpProjectionService | undefined;\n}\n\n/** Reads the MCP projection provider or reports that the Po session is incomplete. */\nexport function requirePoMcpProjectionService(root: Context): PoMcpProjectionService {\n const service = readPoMcpProjectionService(root);\n if (!service) throw new Error('Po MCP projection is unavailable. Load the Po Config core.');\n return service;\n}\n"],"mappings":";;;;AAKA,MAAa,4BAA4B;;AAGzC,MAAa,8BAA8B;;AAG3C,MAAa,4BAA4B;;AAEzC,MAAa,qCAAqC;AAElD,MAAa,iCAAiC,KAAK,OACjD;CACE,SAAS,KAAK,SAAS,KAAK,MAAM,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;CAChE,OAAO,KAAK,SAAS,KAAK,MAAM,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;AAChE,GACA,EAAE,sBAAsB,MAAM,CAChC;
|
|
1
|
+
{"version":3,"file":"mcpProjection.mjs","names":[],"sources":["../../../src/schemas/mcpProjection.ts"],"sourcesContent":["import type { Context } from '@deepseek-ai/cordis';\nimport { type Static, Type } from 'typebox';\nimport { Check, Errors } from 'typebox/value';\n\n/** Schema revision of the neutral MCP projection shared across Po packages. */\nexport const PO_MCP_PROJECTION_VERSION = 1 as const;\n\n/** The portable MCP document revision represented by `agent-plugin-v1`. */\nexport const AGENT_PLUGIN_MCP_SCHEMA_URL = 'https://agent-plugins.org/schemas/1.0.0/mcp.schema.json' as const;\n\n/** Cordis service name for the immutable MCP projection of one Pi session. */\nexport const PO_MCP_PROJECTION_SERVICE = 'po/mcp-projection';\n/** Session-local provider for MCP resources selected by domain. */\nexport const PO_MCP_PROJECTION_RESOLVER_SERVICE = 'po/mcp-projection-resolver';\n\nexport const PoMcpProjectionAllowlistSchema = Type.Object(\n {\n servers: Type.Optional(Type.Array(Type.String({ minLength: 1 }))),\n proxy: Type.Optional(Type.Array(Type.String({ minLength: 1 }))),\n },\n { additionalProperties: false },\n);\n\n/**\n * The person's own MCP config in their Po home, loaded into every repository's sessions.\n * A repository entry with the same name wins over it.\n */\nexport const PO_USER_MCP_CONFIG_FILE = 'mcp.json';\n\nexport const PoMcpNativeProjectionSourceSchema = Type.Object(\n {\n sourceId: Type.String({ minLength: 1 }),\n owner: Type.Union([Type.Literal('user'), Type.Literal('repository'), Type.Literal('plugin')]),\n format: Type.Literal('native'),\n configPath: Type.String({ minLength: 1 }),\n contentDigest: Type.String({ minLength: 1 }),\n },\n { additionalProperties: false },\n);\n\nexport const PoMcpAgentPluginProjectionSourceSchema = Type.Object(\n {\n sourceId: Type.String({ minLength: 1 }),\n owner: Type.Literal('plugin'),\n format: Type.Literal('agent-plugin-v1'),\n configPath: Type.String({ minLength: 1 }),\n contentDigest: Type.String({ minLength: 1 }),\n pluginId: Type.String({ minLength: 1 }),\n pluginRoot: Type.String({ minLength: 1 }),\n pluginDataDirectory: Type.String({ minLength: 1 }),\n mcpSchemaUrl: Type.Literal(AGENT_PLUGIN_MCP_SCHEMA_URL),\n },\n { additionalProperties: false },\n);\n\n/** One native Po layer or one portable Agent Plugin MCP document. */\nexport const PoMcpProjectionSourceSchema = Type.Union([\n PoMcpNativeProjectionSourceSchema,\n PoMcpAgentPluginProjectionSourceSchema,\n]);\n\nexport const PoMcpProjectionSchema = Type.Object(\n {\n version: Type.Literal(PO_MCP_PROJECTION_VERSION),\n enabled: Type.Boolean(),\n /** Content identity supplied by the projection producer. */\n fingerprint: Type.String({ minLength: 1 }),\n repoRoot: Type.String({ minLength: 1 }),\n stagingDirectory: Type.String({ minLength: 1 }),\n generatedConfigPath: Type.Optional(Type.String({ minLength: 1 })),\n sources: Type.Array(PoMcpProjectionSourceSchema),\n allowlist: Type.Optional(PoMcpProjectionAllowlistSchema),\n },\n { additionalProperties: false },\n);\n\ntype DeepReadonly<TValue> = TValue extends (...args: never[]) => unknown\n ? TValue\n : TValue extends readonly (infer TItem)[]\n ? readonly DeepReadonly<TItem>[]\n : TValue extends object\n ? { readonly [TKey in keyof TValue]: DeepReadonly<TValue[TKey]> }\n : TValue;\n\nexport type PoMcpProjectionAllowlist = DeepReadonly<Static<typeof PoMcpProjectionAllowlistSchema>>;\nexport type PoMcpNativeProjectionSource = DeepReadonly<Static<typeof PoMcpNativeProjectionSourceSchema>>;\nexport type PoMcpAgentPluginProjectionSource = DeepReadonly<Static<typeof PoMcpAgentPluginProjectionSourceSchema>>;\nexport type PoMcpProjectionSource = DeepReadonly<Static<typeof PoMcpProjectionSourceSchema>>;\nexport type PoMcpProjectionSourceFormat = PoMcpProjectionSource['format'];\nexport type PoMcpProjection = DeepReadonly<Static<typeof PoMcpProjectionSchema>>;\n\nexport interface PoMcpProjectionService {\n readonly sessionId: string;\n readonly generation: string;\n getSnapshot(): PoMcpProjection;\n}\n\nexport interface PoMcpProjectionResolverService {\n resolve(domains: readonly string[]): Promise<{ projection: PoMcpProjection; cleanup(): Promise<void> }>;\n}\n\nexport interface PoMcpProjectionServiceInput {\n readonly sessionId: string;\n readonly generation: string;\n readonly projection: PoMcpProjection;\n}\n\nexport interface DisabledPoMcpProjectionInput {\n readonly repoRoot: string;\n readonly stagingDirectory: string;\n}\n\nfunction deepFreeze<TValue>(value: TValue): DeepReadonly<TValue> {\n if (typeof value !== 'object' || value === null || Object.isFrozen(value)) {\n return value as DeepReadonly<TValue>;\n }\n for (const child of Object.values(value)) deepFreeze(child);\n return Object.freeze(value) as DeepReadonly<TValue>;\n}\n\nfunction projectionError(value: unknown): Error {\n const [first] = Errors(PoMcpProjectionSchema, value);\n return new Error(`Invalid Po MCP projection${first ? ` at ${first.instancePath || '/'}: ${first.message}` : ''}`);\n}\n\n/** Runtime guard used when a projection crosses a JSON persistence boundary. */\nexport function isPoMcpProjection(value: unknown): value is PoMcpProjection {\n return Check(PoMcpProjectionSchema, value);\n}\n\n/**\n * Builds the explicit fail-closed state used when a Po session has no MCP\n * projection. The root and staging path remain visible for diagnostics, while\n * the empty source list prevents an MCP consumer from falling back to cwd.\n */\nexport function createDisabledPoMcpProjection({\n repoRoot,\n stagingDirectory,\n}: DisabledPoMcpProjectionInput): PoMcpProjection {\n return deepFreeze({\n version: PO_MCP_PROJECTION_VERSION,\n enabled: false,\n // Staging is per-process mutable state and must not change content identity\n // when a synced projection is rebased into a private run directory.\n fingerprint: JSON.stringify({ version: PO_MCP_PROJECTION_VERSION, enabled: false, repoRoot }),\n repoRoot,\n stagingDirectory,\n sources: [],\n });\n}\n\n/** Creates a generation-bound, immutable Cordis service value. */\nexport function createPoMcpProjectionService({\n sessionId,\n generation,\n projection,\n}: PoMcpProjectionServiceInput): PoMcpProjectionService {\n if (!sessionId) throw new Error('Po MCP projection service requires a session id');\n if (!generation) throw new Error('Po MCP projection service requires a generation');\n if (!isPoMcpProjection(projection)) throw projectionError(projection);\n\n const snapshot = deepFreeze(structuredClone(projection)) as PoMcpProjection;\n return Object.freeze({\n sessionId,\n generation,\n getSnapshot: () => snapshot,\n });\n}\n\n/** Reads the MCP projection provider from one Po session's Cordis root. */\nexport function readPoMcpProjectionService(root: Context): PoMcpProjectionService | undefined {\n return root.get(PO_MCP_PROJECTION_SERVICE) as PoMcpProjectionService | undefined;\n}\n\n/** Reads the MCP projection provider or reports that the Po session is incomplete. */\nexport function requirePoMcpProjectionService(root: Context): PoMcpProjectionService {\n const service = readPoMcpProjectionService(root);\n if (!service) throw new Error('Po MCP projection is unavailable. Load the Po Config core.');\n return service;\n}\n"],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ export declare const PoMcpSessionConfigSchema: Type.TObject<{
|
|
|
25
25
|
pluginConfigPaths: Type.TOptional<Type.TArray<Type.TString>>;
|
|
26
26
|
sources: Type.TOptional<Type.TArray<Type.TUnion<[Type.TObject<{
|
|
27
27
|
sourceId: Type.TString;
|
|
28
|
-
owner: Type.TUnion<[Type.TLiteral<"repository">, Type.TLiteral<"plugin">]>;
|
|
28
|
+
owner: Type.TUnion<[Type.TLiteral<"user">, Type.TLiteral<"repository">, Type.TLiteral<"plugin">]>;
|
|
29
29
|
format: Type.TLiteral<"native">;
|
|
30
30
|
configPath: Type.TString;
|
|
31
31
|
contentDigest: Type.TString;
|