@agimon-ai/po-git 0.0.0-alpha.2 → 0.0.0-alpha.3

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.
@@ -341,7 +341,7 @@ const apiContracts = (0, _agimon_ai_po_core_apiContracts.defineApiContract)({
341
341
  {
342
342
  id: "git.changes.channel",
343
343
  scope,
344
- service: "po.hub.v1",
344
+ service: "po.hub",
345
345
  member: "git_changes",
346
346
  kind: "channel",
347
347
  direction: "server-to-client",
@@ -351,7 +351,7 @@ const apiContracts = (0, _agimon_ai_po_core_apiContracts.defineApiContract)({
351
351
  {
352
352
  id: "git.changes.command",
353
353
  scope,
354
- service: "po.hub.v1",
354
+ service: "po.hub",
355
355
  member: "git_changes",
356
356
  kind: "channel",
357
357
  direction: "client-to-server",
@@ -361,7 +361,7 @@ const apiContracts = (0, _agimon_ai_po_core_apiContracts.defineApiContract)({
361
361
  {
362
362
  id: "git.channel",
363
363
  scope,
364
- service: "po.hub.v1",
364
+ service: "po.hub",
365
365
  member: "git_worktrees",
366
366
  kind: "channel",
367
367
  direction: "server-to-client",
@@ -371,7 +371,7 @@ const apiContracts = (0, _agimon_ai_po_core_apiContracts.defineApiContract)({
371
371
  {
372
372
  id: "git.command",
373
373
  scope,
374
- service: "po.hub.v1",
374
+ service: "po.hub",
375
375
  member: "git_worktrees",
376
376
  kind: "channel",
377
377
  direction: "client-to-server",
@@ -1 +1 @@
1
- {"version":3,"file":"apiContracts.cjs","names":["Type","defineApiContract","jsonApiResponses"],"sources":["../src/schemas/apiContracts.ts"],"sourcesContent":["import { defineApiContract, jsonApiResponses } from '@agimon-ai/po-core/apiContracts';\nimport { Type } from 'typebox';\n\nconst S = Type.String();\nconst B = Type.Boolean();\nconst O = Type.Optional;\nconst literals = <T extends string>(values: T[]) => Type.Union(values.map((value) => Type.Literal(value)));\nconst RecordSchema = Type.Object({\n version: Type.Literal(1),\n id: S,\n branch: S,\n baseRef: S,\n path: S,\n repositoryRoot: S,\n sessionId: S,\n parentSessionId: Type.Optional(S),\n status: literals(['spawning', 'running', 'closing', 'orphaned']),\n createdAt: S,\n});\nconst ErrorTargetSchema = Type.Union([\n Type.Object({ action: Type.Literal('create') }),\n Type.Object({ action: Type.Literal('close'), id: S }),\n]);\nexport const WorktreesPayloadSchema = Type.Object({\n worktrees: Type.Array(\n Type.Object({ id: S, branch: S, path: S, sessionId: Type.Union([S, Type.Null()]), orphaned: B, unowned: B }),\n ),\n pending: O(S),\n error: O(S),\n errorTarget: O(ErrorTargetSchema),\n});\nexport const WorktreesCommandSchema = Type.Union([\n Type.Object({\n action: Type.Literal('create'),\n branch: S,\n baseRef: O(S),\n reservationId: O(Type.String({ minLength: 1, pattern: '^[A-Za-z0-9_-]+$' })),\n }),\n Type.Object({ action: Type.Literal('close'), id: S, force: O(B) }),\n]);\nconst N = Type.Integer({ minimum: 0 });\nconst ChangesSchema = Type.Object({\n branch: O(S),\n base: O(S),\n added: N,\n removed: N,\n files: N,\n truncated: O(B),\n upstream: O(Type.Object({ ref: S, ahead: N, behind: N })),\n rebase: O(Type.Object({ conflicts: Type.Array(S) })),\n});\nconst SyncErrorTargetSchema = Type.Union([\n Type.Object({ action: literals(['pull', 'rebase', 'abort-rebase']) }),\n Type.Object({ action: Type.Literal('push'), forceRequired: O(Type.Literal(true)) }),\n]);\nexport const GitChangesPayloadSchema = Type.Object({\n changes: O(ChangesSchema),\n pending: O(S),\n error: O(S),\n errorTarget: O(SyncErrorTargetSchema),\n});\nexport const GitChangesCommandSchema = Type.Union([\n Type.Object({ action: literals(['pull', 'rebase', 'abort-rebase']) }),\n Type.Object({ action: Type.Literal('push'), force: O(Type.Literal(true)) }),\n]);\nconst AuthViewSchema = Type.Object({\n method: literals(['none', 'ssh', 'https']),\n ssh: O(Type.Object({ keyPath: O(S) })),\n https: O(Type.Object({ host: S, username: S, hasToken: B })),\n});\nconst AuthSaveSchema = Type.Union([\n Type.Object({ method: Type.Literal('none') }),\n Type.Object({ method: Type.Literal('ssh'), keyPath: O(S) }),\n Type.Object({ method: Type.Literal('https'), host: S, username: S, token: O(Type.String({ writeOnly: true })) }),\n]);\nconst DiffRowSchema = Type.Object({ marker: literals(['+', '-', ' ']), line: N, content: S });\nconst ReviewSummarySchema = Type.Object({\n repository: B,\n branch: O(S),\n base: O(S),\n mergeBase: O(S),\n truncated: O(B),\n files: Type.Array(\n Type.Object({\n path: S,\n status: literals(['added', 'modified', 'deleted', 'untracked', 'conflicted']),\n added: N,\n removed: N,\n binary: O(B),\n }),\n ),\n});\nconst ReviewFileSchema = Type.Object({\n path: S,\n hunks: Type.Array(Type.Object({ start: N, rows: Type.Array(DiffRowSchema) })),\n binary: O(Type.Literal(true)),\n tooLarge: O(Type.Literal(true)),\n});\nconst query = [\n { name: 'repositoryId', in: 'query' as const, required: true, schema: S },\n { name: 'sessionId', in: 'query' as const, required: true, schema: S },\n];\nexport const apiContracts = defineApiContract({\n version: 1,\n dynamic: [],\n http: (['global', 'workspace'] as const).flatMap((scope) => [\n {\n id: 'git.list',\n scope,\n basePath: 'git',\n path: '/worktrees',\n method: 'GET',\n authentication: 'owner',\n description: 'List admitted repository worktrees.',\n parameters: query.map((item) => ({ ...item, required: item.name === 'repositoryId' })),\n responses: jsonApiResponses(Type.Object({ worktrees: Type.Array(RecordSchema) })),\n },\n {\n id: 'git.create',\n scope,\n basePath: 'git',\n path: '/worktrees',\n method: 'POST',\n authentication: 'owner',\n description: 'Create a worktree and session.',\n parameters: query,\n body: {\n required: true,\n contentType: 'application/json',\n schema: Type.Object({ branch: Type.String({ minLength: 1 }), baseRef: O(S), name: O(S) }),\n },\n responses: jsonApiResponses(Type.Object({ worktree: RecordSchema }), 201),\n },\n {\n id: 'git.close',\n scope,\n basePath: 'git',\n path: '/worktrees/{id}',\n method: 'DELETE',\n authentication: 'owner',\n description: 'Close a worktree.',\n parameters: [...query, { name: 'force', in: 'query', required: false, schema: B }],\n responses: jsonApiResponses(Type.Object({ worktree: RecordSchema })),\n },\n // The new-session dialog's routes and a workspace's remote auth exist only on a workspace mount.\n ...(scope === 'workspace'\n ? [\n {\n id: 'git.auth.read',\n scope,\n basePath: 'git',\n path: '/auth',\n method: 'GET' as const,\n authentication: 'owner' as const,\n description: \"Read a workspace's remote auth for manual sync. The token is never returned.\",\n parameters: [{ name: 'repositoryId', in: 'query' as const, required: true, schema: S }],\n responses: jsonApiResponses(AuthViewSchema),\n },\n {\n id: 'git.auth.save',\n scope,\n basePath: 'git',\n path: '/auth',\n method: 'PUT' as const,\n authentication: 'owner' as const,\n description: \"Replace a workspace's remote auth. Passkey step-up gated for remote devices.\",\n parameters: [{ name: 'repositoryId', in: 'query' as const, required: true, schema: S }],\n body: { required: true, contentType: 'application/json', schema: AuthSaveSchema },\n responses: jsonApiResponses(AuthViewSchema),\n },\n {\n id: 'git.branches',\n scope,\n basePath: 'git',\n path: '/branches',\n method: 'GET' as const,\n authentication: 'owner' as const,\n description: 'List the workspace branches for the new-session dialog.',\n responses: jsonApiResponses(\n Type.Object({\n repository: B,\n current: O(S),\n defaultBase: O(S),\n local: Type.Array(Type.Object({ name: S, checkedOutAt: O(S) })),\n remote: Type.Array(Type.Object({ remote: S, name: S })),\n }),\n ),\n },\n {\n id: 'git.sessions.create',\n scope,\n basePath: 'git',\n path: '/sessions',\n method: 'POST' as const,\n authentication: 'owner' as const,\n description: 'Start a top-level worktree session on an existing or new branch.',\n body: {\n required: true,\n contentType: 'application/json',\n schema: Type.Union([\n Type.Object({ mode: Type.Literal('existing-branch'), branch: S, remote: O(S), name: O(S) }),\n Type.Object({ mode: Type.Literal('new-branch'), branch: S, baseRef: O(S), name: O(S) }),\n ]),\n },\n responses: jsonApiResponses(Type.Object({ sessionId: S, worktreeId: S }), 201),\n },\n ]\n : []),\n // The review routes exist only on a session mount; listed once, beside the global entries.\n ...(scope === 'global'\n ? [\n {\n id: 'git.review.summary',\n scope: 'session' as const,\n basePath: 'git',\n path: '/review',\n method: 'GET' as const,\n authentication: 'owner' as const,\n description: \"List the files the session's checkout changed against its base.\",\n responses: jsonApiResponses(ReviewSummarySchema),\n },\n {\n id: 'git.review.file',\n scope: 'session' as const,\n basePath: 'git',\n path: '/review/file',\n method: 'GET' as const,\n authentication: 'owner' as const,\n description: \"One changed file's hunks; the path must be in the session's change set.\",\n parameters: [{ name: 'path', in: 'query' as const, required: true, schema: Type.String({ minLength: 1 }) }],\n responses: jsonApiResponses(ReviewFileSchema),\n },\n ]\n : []),\n ]),\n sockets: (['global', 'workspace'] as const).flatMap((scope) => [\n {\n id: 'git.changes.channel',\n scope,\n service: 'po.hub.v1',\n member: 'git_changes',\n kind: 'channel',\n direction: 'server-to-client',\n description: \"The session's change against its base, and manual sync state.\",\n input: GitChangesPayloadSchema,\n },\n {\n id: 'git.changes.command',\n scope,\n service: 'po.hub.v1',\n member: 'git_changes',\n kind: 'channel',\n direction: 'client-to-server',\n description: 'Manual pull, push, rebase or abort-rebase for the session.',\n input: GitChangesCommandSchema,\n },\n {\n id: 'git.channel',\n scope,\n service: 'po.hub.v1',\n member: 'git_worktrees',\n kind: 'channel',\n direction: 'server-to-client',\n description: 'Worktree channel payload.',\n input: WorktreesPayloadSchema,\n },\n {\n id: 'git.command',\n scope,\n service: 'po.hub.v1',\n member: 'git_worktrees',\n kind: 'channel',\n direction: 'client-to-server',\n description: 'Worktree channel command payload.',\n input: WorktreesCommandSchema,\n },\n ]),\n});\nexport default apiContracts;\n"],"mappings":"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"}
1
+ {"version":3,"file":"apiContracts.cjs","names":["Type","defineApiContract","jsonApiResponses"],"sources":["../src/schemas/apiContracts.ts"],"sourcesContent":["import { defineApiContract, jsonApiResponses } from '@agimon-ai/po-core/apiContracts';\nimport { Type } from 'typebox';\n\nconst S = Type.String();\nconst B = Type.Boolean();\nconst O = Type.Optional;\nconst literals = <T extends string>(values: T[]) => Type.Union(values.map((value) => Type.Literal(value)));\nconst RecordSchema = Type.Object({\n version: Type.Literal(1),\n id: S,\n branch: S,\n baseRef: S,\n path: S,\n repositoryRoot: S,\n sessionId: S,\n parentSessionId: Type.Optional(S),\n status: literals(['spawning', 'running', 'closing', 'orphaned']),\n createdAt: S,\n});\nconst ErrorTargetSchema = Type.Union([\n Type.Object({ action: Type.Literal('create') }),\n Type.Object({ action: Type.Literal('close'), id: S }),\n]);\nexport const WorktreesPayloadSchema = Type.Object({\n worktrees: Type.Array(\n Type.Object({ id: S, branch: S, path: S, sessionId: Type.Union([S, Type.Null()]), orphaned: B, unowned: B }),\n ),\n pending: O(S),\n error: O(S),\n errorTarget: O(ErrorTargetSchema),\n});\nexport const WorktreesCommandSchema = Type.Union([\n Type.Object({\n action: Type.Literal('create'),\n branch: S,\n baseRef: O(S),\n reservationId: O(Type.String({ minLength: 1, pattern: '^[A-Za-z0-9_-]+$' })),\n }),\n Type.Object({ action: Type.Literal('close'), id: S, force: O(B) }),\n]);\nconst N = Type.Integer({ minimum: 0 });\nconst ChangesSchema = Type.Object({\n branch: O(S),\n base: O(S),\n added: N,\n removed: N,\n files: N,\n truncated: O(B),\n upstream: O(Type.Object({ ref: S, ahead: N, behind: N })),\n rebase: O(Type.Object({ conflicts: Type.Array(S) })),\n});\nconst SyncErrorTargetSchema = Type.Union([\n Type.Object({ action: literals(['pull', 'rebase', 'abort-rebase']) }),\n Type.Object({ action: Type.Literal('push'), forceRequired: O(Type.Literal(true)) }),\n]);\nexport const GitChangesPayloadSchema = Type.Object({\n changes: O(ChangesSchema),\n pending: O(S),\n error: O(S),\n errorTarget: O(SyncErrorTargetSchema),\n});\nexport const GitChangesCommandSchema = Type.Union([\n Type.Object({ action: literals(['pull', 'rebase', 'abort-rebase']) }),\n Type.Object({ action: Type.Literal('push'), force: O(Type.Literal(true)) }),\n]);\nconst AuthViewSchema = Type.Object({\n method: literals(['none', 'ssh', 'https']),\n ssh: O(Type.Object({ keyPath: O(S) })),\n https: O(Type.Object({ host: S, username: S, hasToken: B })),\n});\nconst AuthSaveSchema = Type.Union([\n Type.Object({ method: Type.Literal('none') }),\n Type.Object({ method: Type.Literal('ssh'), keyPath: O(S) }),\n Type.Object({ method: Type.Literal('https'), host: S, username: S, token: O(Type.String({ writeOnly: true })) }),\n]);\nconst DiffRowSchema = Type.Object({ marker: literals(['+', '-', ' ']), line: N, content: S });\nconst ReviewSummarySchema = Type.Object({\n repository: B,\n branch: O(S),\n base: O(S),\n mergeBase: O(S),\n truncated: O(B),\n files: Type.Array(\n Type.Object({\n path: S,\n status: literals(['added', 'modified', 'deleted', 'untracked', 'conflicted']),\n added: N,\n removed: N,\n binary: O(B),\n }),\n ),\n});\nconst ReviewFileSchema = Type.Object({\n path: S,\n hunks: Type.Array(Type.Object({ start: N, rows: Type.Array(DiffRowSchema) })),\n binary: O(Type.Literal(true)),\n tooLarge: O(Type.Literal(true)),\n});\nconst query = [\n { name: 'repositoryId', in: 'query' as const, required: true, schema: S },\n { name: 'sessionId', in: 'query' as const, required: true, schema: S },\n];\nexport const apiContracts = defineApiContract({\n version: 1,\n dynamic: [],\n http: (['global', 'workspace'] as const).flatMap((scope) => [\n {\n id: 'git.list',\n scope,\n basePath: 'git',\n path: '/worktrees',\n method: 'GET',\n authentication: 'owner',\n description: 'List admitted repository worktrees.',\n parameters: query.map((item) => ({ ...item, required: item.name === 'repositoryId' })),\n responses: jsonApiResponses(Type.Object({ worktrees: Type.Array(RecordSchema) })),\n },\n {\n id: 'git.create',\n scope,\n basePath: 'git',\n path: '/worktrees',\n method: 'POST',\n authentication: 'owner',\n description: 'Create a worktree and session.',\n parameters: query,\n body: {\n required: true,\n contentType: 'application/json',\n schema: Type.Object({ branch: Type.String({ minLength: 1 }), baseRef: O(S), name: O(S) }),\n },\n responses: jsonApiResponses(Type.Object({ worktree: RecordSchema }), 201),\n },\n {\n id: 'git.close',\n scope,\n basePath: 'git',\n path: '/worktrees/{id}',\n method: 'DELETE',\n authentication: 'owner',\n description: 'Close a worktree.',\n parameters: [...query, { name: 'force', in: 'query', required: false, schema: B }],\n responses: jsonApiResponses(Type.Object({ worktree: RecordSchema })),\n },\n // The new-session dialog's routes and a workspace's remote auth exist only on a workspace mount.\n ...(scope === 'workspace'\n ? [\n {\n id: 'git.auth.read',\n scope,\n basePath: 'git',\n path: '/auth',\n method: 'GET' as const,\n authentication: 'owner' as const,\n description: \"Read a workspace's remote auth for manual sync. The token is never returned.\",\n parameters: [{ name: 'repositoryId', in: 'query' as const, required: true, schema: S }],\n responses: jsonApiResponses(AuthViewSchema),\n },\n {\n id: 'git.auth.save',\n scope,\n basePath: 'git',\n path: '/auth',\n method: 'PUT' as const,\n authentication: 'owner' as const,\n description: \"Replace a workspace's remote auth. Passkey step-up gated for remote devices.\",\n parameters: [{ name: 'repositoryId', in: 'query' as const, required: true, schema: S }],\n body: { required: true, contentType: 'application/json', schema: AuthSaveSchema },\n responses: jsonApiResponses(AuthViewSchema),\n },\n {\n id: 'git.branches',\n scope,\n basePath: 'git',\n path: '/branches',\n method: 'GET' as const,\n authentication: 'owner' as const,\n description: 'List the workspace branches for the new-session dialog.',\n responses: jsonApiResponses(\n Type.Object({\n repository: B,\n current: O(S),\n defaultBase: O(S),\n local: Type.Array(Type.Object({ name: S, checkedOutAt: O(S) })),\n remote: Type.Array(Type.Object({ remote: S, name: S })),\n }),\n ),\n },\n {\n id: 'git.sessions.create',\n scope,\n basePath: 'git',\n path: '/sessions',\n method: 'POST' as const,\n authentication: 'owner' as const,\n description: 'Start a top-level worktree session on an existing or new branch.',\n body: {\n required: true,\n contentType: 'application/json',\n schema: Type.Union([\n Type.Object({ mode: Type.Literal('existing-branch'), branch: S, remote: O(S), name: O(S) }),\n Type.Object({ mode: Type.Literal('new-branch'), branch: S, baseRef: O(S), name: O(S) }),\n ]),\n },\n responses: jsonApiResponses(Type.Object({ sessionId: S, worktreeId: S }), 201),\n },\n ]\n : []),\n // The review routes exist only on a session mount; listed once, beside the global entries.\n ...(scope === 'global'\n ? [\n {\n id: 'git.review.summary',\n scope: 'session' as const,\n basePath: 'git',\n path: '/review',\n method: 'GET' as const,\n authentication: 'owner' as const,\n description: \"List the files the session's checkout changed against its base.\",\n responses: jsonApiResponses(ReviewSummarySchema),\n },\n {\n id: 'git.review.file',\n scope: 'session' as const,\n basePath: 'git',\n path: '/review/file',\n method: 'GET' as const,\n authentication: 'owner' as const,\n description: \"One changed file's hunks; the path must be in the session's change set.\",\n parameters: [{ name: 'path', in: 'query' as const, required: true, schema: Type.String({ minLength: 1 }) }],\n responses: jsonApiResponses(ReviewFileSchema),\n },\n ]\n : []),\n ]),\n sockets: (['global', 'workspace'] as const).flatMap((scope) => [\n {\n id: 'git.changes.channel',\n scope,\n service: 'po.hub',\n member: 'git_changes',\n kind: 'channel',\n direction: 'server-to-client',\n description: \"The session's change against its base, and manual sync state.\",\n input: GitChangesPayloadSchema,\n },\n {\n id: 'git.changes.command',\n scope,\n service: 'po.hub',\n member: 'git_changes',\n kind: 'channel',\n direction: 'client-to-server',\n description: 'Manual pull, push, rebase or abort-rebase for the session.',\n input: GitChangesCommandSchema,\n },\n {\n id: 'git.channel',\n scope,\n service: 'po.hub',\n member: 'git_worktrees',\n kind: 'channel',\n direction: 'server-to-client',\n description: 'Worktree channel payload.',\n input: WorktreesPayloadSchema,\n },\n {\n id: 'git.command',\n scope,\n service: 'po.hub',\n member: 'git_worktrees',\n kind: 'channel',\n direction: 'client-to-server',\n description: 'Worktree channel command payload.',\n input: WorktreesCommandSchema,\n },\n ]),\n});\nexport default apiContracts;\n"],"mappings":"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"}
@@ -337,7 +337,7 @@ const apiContracts = defineApiContract({
337
337
  {
338
338
  id: "git.changes.channel",
339
339
  scope,
340
- service: "po.hub.v1",
340
+ service: "po.hub",
341
341
  member: "git_changes",
342
342
  kind: "channel",
343
343
  direction: "server-to-client",
@@ -347,7 +347,7 @@ const apiContracts = defineApiContract({
347
347
  {
348
348
  id: "git.changes.command",
349
349
  scope,
350
- service: "po.hub.v1",
350
+ service: "po.hub",
351
351
  member: "git_changes",
352
352
  kind: "channel",
353
353
  direction: "client-to-server",
@@ -357,7 +357,7 @@ const apiContracts = defineApiContract({
357
357
  {
358
358
  id: "git.channel",
359
359
  scope,
360
- service: "po.hub.v1",
360
+ service: "po.hub",
361
361
  member: "git_worktrees",
362
362
  kind: "channel",
363
363
  direction: "server-to-client",
@@ -367,7 +367,7 @@ const apiContracts = defineApiContract({
367
367
  {
368
368
  id: "git.command",
369
369
  scope,
370
- service: "po.hub.v1",
370
+ service: "po.hub",
371
371
  member: "git_worktrees",
372
372
  kind: "channel",
373
373
  direction: "client-to-server",
@@ -1 +1 @@
1
- {"version":3,"file":"apiContracts.mjs","names":[],"sources":["../src/schemas/apiContracts.ts"],"sourcesContent":["import { defineApiContract, jsonApiResponses } from '@agimon-ai/po-core/apiContracts';\nimport { Type } from 'typebox';\n\nconst S = Type.String();\nconst B = Type.Boolean();\nconst O = Type.Optional;\nconst literals = <T extends string>(values: T[]) => Type.Union(values.map((value) => Type.Literal(value)));\nconst RecordSchema = Type.Object({\n version: Type.Literal(1),\n id: S,\n branch: S,\n baseRef: S,\n path: S,\n repositoryRoot: S,\n sessionId: S,\n parentSessionId: Type.Optional(S),\n status: literals(['spawning', 'running', 'closing', 'orphaned']),\n createdAt: S,\n});\nconst ErrorTargetSchema = Type.Union([\n Type.Object({ action: Type.Literal('create') }),\n Type.Object({ action: Type.Literal('close'), id: S }),\n]);\nexport const WorktreesPayloadSchema = Type.Object({\n worktrees: Type.Array(\n Type.Object({ id: S, branch: S, path: S, sessionId: Type.Union([S, Type.Null()]), orphaned: B, unowned: B }),\n ),\n pending: O(S),\n error: O(S),\n errorTarget: O(ErrorTargetSchema),\n});\nexport const WorktreesCommandSchema = Type.Union([\n Type.Object({\n action: Type.Literal('create'),\n branch: S,\n baseRef: O(S),\n reservationId: O(Type.String({ minLength: 1, pattern: '^[A-Za-z0-9_-]+$' })),\n }),\n Type.Object({ action: Type.Literal('close'), id: S, force: O(B) }),\n]);\nconst N = Type.Integer({ minimum: 0 });\nconst ChangesSchema = Type.Object({\n branch: O(S),\n base: O(S),\n added: N,\n removed: N,\n files: N,\n truncated: O(B),\n upstream: O(Type.Object({ ref: S, ahead: N, behind: N })),\n rebase: O(Type.Object({ conflicts: Type.Array(S) })),\n});\nconst SyncErrorTargetSchema = Type.Union([\n Type.Object({ action: literals(['pull', 'rebase', 'abort-rebase']) }),\n Type.Object({ action: Type.Literal('push'), forceRequired: O(Type.Literal(true)) }),\n]);\nexport const GitChangesPayloadSchema = Type.Object({\n changes: O(ChangesSchema),\n pending: O(S),\n error: O(S),\n errorTarget: O(SyncErrorTargetSchema),\n});\nexport const GitChangesCommandSchema = Type.Union([\n Type.Object({ action: literals(['pull', 'rebase', 'abort-rebase']) }),\n Type.Object({ action: Type.Literal('push'), force: O(Type.Literal(true)) }),\n]);\nconst AuthViewSchema = Type.Object({\n method: literals(['none', 'ssh', 'https']),\n ssh: O(Type.Object({ keyPath: O(S) })),\n https: O(Type.Object({ host: S, username: S, hasToken: B })),\n});\nconst AuthSaveSchema = Type.Union([\n Type.Object({ method: Type.Literal('none') }),\n Type.Object({ method: Type.Literal('ssh'), keyPath: O(S) }),\n Type.Object({ method: Type.Literal('https'), host: S, username: S, token: O(Type.String({ writeOnly: true })) }),\n]);\nconst DiffRowSchema = Type.Object({ marker: literals(['+', '-', ' ']), line: N, content: S });\nconst ReviewSummarySchema = Type.Object({\n repository: B,\n branch: O(S),\n base: O(S),\n mergeBase: O(S),\n truncated: O(B),\n files: Type.Array(\n Type.Object({\n path: S,\n status: literals(['added', 'modified', 'deleted', 'untracked', 'conflicted']),\n added: N,\n removed: N,\n binary: O(B),\n }),\n ),\n});\nconst ReviewFileSchema = Type.Object({\n path: S,\n hunks: Type.Array(Type.Object({ start: N, rows: Type.Array(DiffRowSchema) })),\n binary: O(Type.Literal(true)),\n tooLarge: O(Type.Literal(true)),\n});\nconst query = [\n { name: 'repositoryId', in: 'query' as const, required: true, schema: S },\n { name: 'sessionId', in: 'query' as const, required: true, schema: S },\n];\nexport const apiContracts = defineApiContract({\n version: 1,\n dynamic: [],\n http: (['global', 'workspace'] as const).flatMap((scope) => [\n {\n id: 'git.list',\n scope,\n basePath: 'git',\n path: '/worktrees',\n method: 'GET',\n authentication: 'owner',\n description: 'List admitted repository worktrees.',\n parameters: query.map((item) => ({ ...item, required: item.name === 'repositoryId' })),\n responses: jsonApiResponses(Type.Object({ worktrees: Type.Array(RecordSchema) })),\n },\n {\n id: 'git.create',\n scope,\n basePath: 'git',\n path: '/worktrees',\n method: 'POST',\n authentication: 'owner',\n description: 'Create a worktree and session.',\n parameters: query,\n body: {\n required: true,\n contentType: 'application/json',\n schema: Type.Object({ branch: Type.String({ minLength: 1 }), baseRef: O(S), name: O(S) }),\n },\n responses: jsonApiResponses(Type.Object({ worktree: RecordSchema }), 201),\n },\n {\n id: 'git.close',\n scope,\n basePath: 'git',\n path: '/worktrees/{id}',\n method: 'DELETE',\n authentication: 'owner',\n description: 'Close a worktree.',\n parameters: [...query, { name: 'force', in: 'query', required: false, schema: B }],\n responses: jsonApiResponses(Type.Object({ worktree: RecordSchema })),\n },\n // The new-session dialog's routes and a workspace's remote auth exist only on a workspace mount.\n ...(scope === 'workspace'\n ? [\n {\n id: 'git.auth.read',\n scope,\n basePath: 'git',\n path: '/auth',\n method: 'GET' as const,\n authentication: 'owner' as const,\n description: \"Read a workspace's remote auth for manual sync. The token is never returned.\",\n parameters: [{ name: 'repositoryId', in: 'query' as const, required: true, schema: S }],\n responses: jsonApiResponses(AuthViewSchema),\n },\n {\n id: 'git.auth.save',\n scope,\n basePath: 'git',\n path: '/auth',\n method: 'PUT' as const,\n authentication: 'owner' as const,\n description: \"Replace a workspace's remote auth. Passkey step-up gated for remote devices.\",\n parameters: [{ name: 'repositoryId', in: 'query' as const, required: true, schema: S }],\n body: { required: true, contentType: 'application/json', schema: AuthSaveSchema },\n responses: jsonApiResponses(AuthViewSchema),\n },\n {\n id: 'git.branches',\n scope,\n basePath: 'git',\n path: '/branches',\n method: 'GET' as const,\n authentication: 'owner' as const,\n description: 'List the workspace branches for the new-session dialog.',\n responses: jsonApiResponses(\n Type.Object({\n repository: B,\n current: O(S),\n defaultBase: O(S),\n local: Type.Array(Type.Object({ name: S, checkedOutAt: O(S) })),\n remote: Type.Array(Type.Object({ remote: S, name: S })),\n }),\n ),\n },\n {\n id: 'git.sessions.create',\n scope,\n basePath: 'git',\n path: '/sessions',\n method: 'POST' as const,\n authentication: 'owner' as const,\n description: 'Start a top-level worktree session on an existing or new branch.',\n body: {\n required: true,\n contentType: 'application/json',\n schema: Type.Union([\n Type.Object({ mode: Type.Literal('existing-branch'), branch: S, remote: O(S), name: O(S) }),\n Type.Object({ mode: Type.Literal('new-branch'), branch: S, baseRef: O(S), name: O(S) }),\n ]),\n },\n responses: jsonApiResponses(Type.Object({ sessionId: S, worktreeId: S }), 201),\n },\n ]\n : []),\n // The review routes exist only on a session mount; listed once, beside the global entries.\n ...(scope === 'global'\n ? [\n {\n id: 'git.review.summary',\n scope: 'session' as const,\n basePath: 'git',\n path: '/review',\n method: 'GET' as const,\n authentication: 'owner' as const,\n description: \"List the files the session's checkout changed against its base.\",\n responses: jsonApiResponses(ReviewSummarySchema),\n },\n {\n id: 'git.review.file',\n scope: 'session' as const,\n basePath: 'git',\n path: '/review/file',\n method: 'GET' as const,\n authentication: 'owner' as const,\n description: \"One changed file's hunks; the path must be in the session's change set.\",\n parameters: [{ name: 'path', in: 'query' as const, required: true, schema: Type.String({ minLength: 1 }) }],\n responses: jsonApiResponses(ReviewFileSchema),\n },\n ]\n : []),\n ]),\n sockets: (['global', 'workspace'] as const).flatMap((scope) => [\n {\n id: 'git.changes.channel',\n scope,\n service: 'po.hub.v1',\n member: 'git_changes',\n kind: 'channel',\n direction: 'server-to-client',\n description: \"The session's change against its base, and manual sync state.\",\n input: GitChangesPayloadSchema,\n },\n {\n id: 'git.changes.command',\n scope,\n service: 'po.hub.v1',\n member: 'git_changes',\n kind: 'channel',\n direction: 'client-to-server',\n description: 'Manual pull, push, rebase or abort-rebase for the session.',\n input: GitChangesCommandSchema,\n },\n {\n id: 'git.channel',\n scope,\n service: 'po.hub.v1',\n member: 'git_worktrees',\n kind: 'channel',\n direction: 'server-to-client',\n description: 'Worktree channel payload.',\n input: WorktreesPayloadSchema,\n },\n {\n id: 'git.command',\n scope,\n service: 'po.hub.v1',\n member: 'git_worktrees',\n kind: 'channel',\n direction: 'client-to-server',\n description: 'Worktree channel command payload.',\n input: WorktreesCommandSchema,\n },\n ]),\n});\nexport default apiContracts;\n"],"mappings":"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"}
1
+ {"version":3,"file":"apiContracts.mjs","names":[],"sources":["../src/schemas/apiContracts.ts"],"sourcesContent":["import { defineApiContract, jsonApiResponses } from '@agimon-ai/po-core/apiContracts';\nimport { Type } from 'typebox';\n\nconst S = Type.String();\nconst B = Type.Boolean();\nconst O = Type.Optional;\nconst literals = <T extends string>(values: T[]) => Type.Union(values.map((value) => Type.Literal(value)));\nconst RecordSchema = Type.Object({\n version: Type.Literal(1),\n id: S,\n branch: S,\n baseRef: S,\n path: S,\n repositoryRoot: S,\n sessionId: S,\n parentSessionId: Type.Optional(S),\n status: literals(['spawning', 'running', 'closing', 'orphaned']),\n createdAt: S,\n});\nconst ErrorTargetSchema = Type.Union([\n Type.Object({ action: Type.Literal('create') }),\n Type.Object({ action: Type.Literal('close'), id: S }),\n]);\nexport const WorktreesPayloadSchema = Type.Object({\n worktrees: Type.Array(\n Type.Object({ id: S, branch: S, path: S, sessionId: Type.Union([S, Type.Null()]), orphaned: B, unowned: B }),\n ),\n pending: O(S),\n error: O(S),\n errorTarget: O(ErrorTargetSchema),\n});\nexport const WorktreesCommandSchema = Type.Union([\n Type.Object({\n action: Type.Literal('create'),\n branch: S,\n baseRef: O(S),\n reservationId: O(Type.String({ minLength: 1, pattern: '^[A-Za-z0-9_-]+$' })),\n }),\n Type.Object({ action: Type.Literal('close'), id: S, force: O(B) }),\n]);\nconst N = Type.Integer({ minimum: 0 });\nconst ChangesSchema = Type.Object({\n branch: O(S),\n base: O(S),\n added: N,\n removed: N,\n files: N,\n truncated: O(B),\n upstream: O(Type.Object({ ref: S, ahead: N, behind: N })),\n rebase: O(Type.Object({ conflicts: Type.Array(S) })),\n});\nconst SyncErrorTargetSchema = Type.Union([\n Type.Object({ action: literals(['pull', 'rebase', 'abort-rebase']) }),\n Type.Object({ action: Type.Literal('push'), forceRequired: O(Type.Literal(true)) }),\n]);\nexport const GitChangesPayloadSchema = Type.Object({\n changes: O(ChangesSchema),\n pending: O(S),\n error: O(S),\n errorTarget: O(SyncErrorTargetSchema),\n});\nexport const GitChangesCommandSchema = Type.Union([\n Type.Object({ action: literals(['pull', 'rebase', 'abort-rebase']) }),\n Type.Object({ action: Type.Literal('push'), force: O(Type.Literal(true)) }),\n]);\nconst AuthViewSchema = Type.Object({\n method: literals(['none', 'ssh', 'https']),\n ssh: O(Type.Object({ keyPath: O(S) })),\n https: O(Type.Object({ host: S, username: S, hasToken: B })),\n});\nconst AuthSaveSchema = Type.Union([\n Type.Object({ method: Type.Literal('none') }),\n Type.Object({ method: Type.Literal('ssh'), keyPath: O(S) }),\n Type.Object({ method: Type.Literal('https'), host: S, username: S, token: O(Type.String({ writeOnly: true })) }),\n]);\nconst DiffRowSchema = Type.Object({ marker: literals(['+', '-', ' ']), line: N, content: S });\nconst ReviewSummarySchema = Type.Object({\n repository: B,\n branch: O(S),\n base: O(S),\n mergeBase: O(S),\n truncated: O(B),\n files: Type.Array(\n Type.Object({\n path: S,\n status: literals(['added', 'modified', 'deleted', 'untracked', 'conflicted']),\n added: N,\n removed: N,\n binary: O(B),\n }),\n ),\n});\nconst ReviewFileSchema = Type.Object({\n path: S,\n hunks: Type.Array(Type.Object({ start: N, rows: Type.Array(DiffRowSchema) })),\n binary: O(Type.Literal(true)),\n tooLarge: O(Type.Literal(true)),\n});\nconst query = [\n { name: 'repositoryId', in: 'query' as const, required: true, schema: S },\n { name: 'sessionId', in: 'query' as const, required: true, schema: S },\n];\nexport const apiContracts = defineApiContract({\n version: 1,\n dynamic: [],\n http: (['global', 'workspace'] as const).flatMap((scope) => [\n {\n id: 'git.list',\n scope,\n basePath: 'git',\n path: '/worktrees',\n method: 'GET',\n authentication: 'owner',\n description: 'List admitted repository worktrees.',\n parameters: query.map((item) => ({ ...item, required: item.name === 'repositoryId' })),\n responses: jsonApiResponses(Type.Object({ worktrees: Type.Array(RecordSchema) })),\n },\n {\n id: 'git.create',\n scope,\n basePath: 'git',\n path: '/worktrees',\n method: 'POST',\n authentication: 'owner',\n description: 'Create a worktree and session.',\n parameters: query,\n body: {\n required: true,\n contentType: 'application/json',\n schema: Type.Object({ branch: Type.String({ minLength: 1 }), baseRef: O(S), name: O(S) }),\n },\n responses: jsonApiResponses(Type.Object({ worktree: RecordSchema }), 201),\n },\n {\n id: 'git.close',\n scope,\n basePath: 'git',\n path: '/worktrees/{id}',\n method: 'DELETE',\n authentication: 'owner',\n description: 'Close a worktree.',\n parameters: [...query, { name: 'force', in: 'query', required: false, schema: B }],\n responses: jsonApiResponses(Type.Object({ worktree: RecordSchema })),\n },\n // The new-session dialog's routes and a workspace's remote auth exist only on a workspace mount.\n ...(scope === 'workspace'\n ? [\n {\n id: 'git.auth.read',\n scope,\n basePath: 'git',\n path: '/auth',\n method: 'GET' as const,\n authentication: 'owner' as const,\n description: \"Read a workspace's remote auth for manual sync. The token is never returned.\",\n parameters: [{ name: 'repositoryId', in: 'query' as const, required: true, schema: S }],\n responses: jsonApiResponses(AuthViewSchema),\n },\n {\n id: 'git.auth.save',\n scope,\n basePath: 'git',\n path: '/auth',\n method: 'PUT' as const,\n authentication: 'owner' as const,\n description: \"Replace a workspace's remote auth. Passkey step-up gated for remote devices.\",\n parameters: [{ name: 'repositoryId', in: 'query' as const, required: true, schema: S }],\n body: { required: true, contentType: 'application/json', schema: AuthSaveSchema },\n responses: jsonApiResponses(AuthViewSchema),\n },\n {\n id: 'git.branches',\n scope,\n basePath: 'git',\n path: '/branches',\n method: 'GET' as const,\n authentication: 'owner' as const,\n description: 'List the workspace branches for the new-session dialog.',\n responses: jsonApiResponses(\n Type.Object({\n repository: B,\n current: O(S),\n defaultBase: O(S),\n local: Type.Array(Type.Object({ name: S, checkedOutAt: O(S) })),\n remote: Type.Array(Type.Object({ remote: S, name: S })),\n }),\n ),\n },\n {\n id: 'git.sessions.create',\n scope,\n basePath: 'git',\n path: '/sessions',\n method: 'POST' as const,\n authentication: 'owner' as const,\n description: 'Start a top-level worktree session on an existing or new branch.',\n body: {\n required: true,\n contentType: 'application/json',\n schema: Type.Union([\n Type.Object({ mode: Type.Literal('existing-branch'), branch: S, remote: O(S), name: O(S) }),\n Type.Object({ mode: Type.Literal('new-branch'), branch: S, baseRef: O(S), name: O(S) }),\n ]),\n },\n responses: jsonApiResponses(Type.Object({ sessionId: S, worktreeId: S }), 201),\n },\n ]\n : []),\n // The review routes exist only on a session mount; listed once, beside the global entries.\n ...(scope === 'global'\n ? [\n {\n id: 'git.review.summary',\n scope: 'session' as const,\n basePath: 'git',\n path: '/review',\n method: 'GET' as const,\n authentication: 'owner' as const,\n description: \"List the files the session's checkout changed against its base.\",\n responses: jsonApiResponses(ReviewSummarySchema),\n },\n {\n id: 'git.review.file',\n scope: 'session' as const,\n basePath: 'git',\n path: '/review/file',\n method: 'GET' as const,\n authentication: 'owner' as const,\n description: \"One changed file's hunks; the path must be in the session's change set.\",\n parameters: [{ name: 'path', in: 'query' as const, required: true, schema: Type.String({ minLength: 1 }) }],\n responses: jsonApiResponses(ReviewFileSchema),\n },\n ]\n : []),\n ]),\n sockets: (['global', 'workspace'] as const).flatMap((scope) => [\n {\n id: 'git.changes.channel',\n scope,\n service: 'po.hub',\n member: 'git_changes',\n kind: 'channel',\n direction: 'server-to-client',\n description: \"The session's change against its base, and manual sync state.\",\n input: GitChangesPayloadSchema,\n },\n {\n id: 'git.changes.command',\n scope,\n service: 'po.hub',\n member: 'git_changes',\n kind: 'channel',\n direction: 'client-to-server',\n description: 'Manual pull, push, rebase or abort-rebase for the session.',\n input: GitChangesCommandSchema,\n },\n {\n id: 'git.channel',\n scope,\n service: 'po.hub',\n member: 'git_worktrees',\n kind: 'channel',\n direction: 'server-to-client',\n description: 'Worktree channel payload.',\n input: WorktreesPayloadSchema,\n },\n {\n id: 'git.command',\n scope,\n service: 'po.hub',\n member: 'git_worktrees',\n kind: 'channel',\n direction: 'client-to-server',\n description: 'Worktree channel command payload.',\n input: WorktreesCommandSchema,\n },\n ]),\n});\nexport default apiContracts;\n"],"mappings":";;;AAGA,MAAM,IAAI,KAAK,OAAO;AACtB,MAAM,IAAI,KAAK,QAAQ;AACvB,MAAM,IAAI,KAAK;AACf,MAAM,YAA8B,WAAgB,KAAK,MAAM,OAAO,KAAK,UAAU,KAAK,QAAQ,KAAK,CAAC,CAAC;AACzG,MAAM,eAAe,KAAK,OAAO;CAC/B,SAAS,KAAK,QAAQ,CAAC;CACvB,IAAI;CACJ,QAAQ;CACR,SAAS;CACT,MAAM;CACN,gBAAgB;CAChB,WAAW;CACX,iBAAiB,KAAK,SAAS,CAAC;CAChC,QAAQ,SAAS;EAAC;EAAY;EAAW;EAAW;CAAU,CAAC;CAC/D,WAAW;AACb,CAAC;AACD,MAAM,oBAAoB,KAAK,MAAM,CACnC,KAAK,OAAO,EAAE,QAAQ,KAAK,QAAQ,QAAQ,EAAE,CAAC,GAC9C,KAAK,OAAO;CAAE,QAAQ,KAAK,QAAQ,OAAO;CAAG,IAAI;AAAE,CAAC,CACtD,CAAC;AACD,MAAa,yBAAyB,KAAK,OAAO;CAChD,WAAW,KAAK,MACd,KAAK,OAAO;EAAE,IAAI;EAAG,QAAQ;EAAG,MAAM;EAAG,WAAW,KAAK,MAAM,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;EAAG,UAAU;EAAG,SAAS;CAAE,CAAC,CAC7G;CACA,SAAS,EAAE,CAAC;CACZ,OAAO,EAAE,CAAC;CACV,aAAa,EAAE,iBAAiB;AAClC,CAAC;AACD,MAAa,yBAAyB,KAAK,MAAM,CAC/C,KAAK,OAAO;CACV,QAAQ,KAAK,QAAQ,QAAQ;CAC7B,QAAQ;CACR,SAAS,EAAE,CAAC;CACZ,eAAe,EAAE,KAAK,OAAO;EAAE,WAAW;EAAG,SAAS;CAAmB,CAAC,CAAC;AAC7E,CAAC,GACD,KAAK,OAAO;CAAE,QAAQ,KAAK,QAAQ,OAAO;CAAG,IAAI;CAAG,OAAO,EAAE,CAAC;AAAE,CAAC,CACnE,CAAC;AACD,MAAM,IAAI,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC;AACrC,MAAM,gBAAgB,KAAK,OAAO;CAChC,QAAQ,EAAE,CAAC;CACX,MAAM,EAAE,CAAC;CACT,OAAO;CACP,SAAS;CACT,OAAO;CACP,WAAW,EAAE,CAAC;CACd,UAAU,EAAE,KAAK,OAAO;EAAE,KAAK;EAAG,OAAO;EAAG,QAAQ;CAAE,CAAC,CAAC;CACxD,QAAQ,EAAE,KAAK,OAAO,EAAE,WAAW,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;AACrD,CAAC;AACD,MAAM,wBAAwB,KAAK,MAAM,CACvC,KAAK,OAAO,EAAE,QAAQ,SAAS;CAAC;CAAQ;CAAU;AAAc,CAAC,EAAE,CAAC,GACpE,KAAK,OAAO;CAAE,QAAQ,KAAK,QAAQ,MAAM;CAAG,eAAe,EAAE,KAAK,QAAQ,IAAI,CAAC;AAAE,CAAC,CACpF,CAAC;AACD,MAAa,0BAA0B,KAAK,OAAO;CACjD,SAAS,EAAE,aAAa;CACxB,SAAS,EAAE,CAAC;CACZ,OAAO,EAAE,CAAC;CACV,aAAa,EAAE,qBAAqB;AACtC,CAAC;AACD,MAAa,0BAA0B,KAAK,MAAM,CAChD,KAAK,OAAO,EAAE,QAAQ,SAAS;CAAC;CAAQ;CAAU;AAAc,CAAC,EAAE,CAAC,GACpE,KAAK,OAAO;CAAE,QAAQ,KAAK,QAAQ,MAAM;CAAG,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC;AAAE,CAAC,CAC5E,CAAC;AACD,MAAM,iBAAiB,KAAK,OAAO;CACjC,QAAQ,SAAS;EAAC;EAAQ;EAAO;CAAO,CAAC;CACzC,KAAK,EAAE,KAAK,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;CACrC,OAAO,EAAE,KAAK,OAAO;EAAE,MAAM;EAAG,UAAU;EAAG,UAAU;CAAE,CAAC,CAAC;AAC7D,CAAC;AACD,MAAM,iBAAiB,KAAK,MAAM;CAChC,KAAK,OAAO,EAAE,QAAQ,KAAK,QAAQ,MAAM,EAAE,CAAC;CAC5C,KAAK,OAAO;EAAE,QAAQ,KAAK,QAAQ,KAAK;EAAG,SAAS,EAAE,CAAC;CAAE,CAAC;CAC1D,KAAK,OAAO;EAAE,QAAQ,KAAK,QAAQ,OAAO;EAAG,MAAM;EAAG,UAAU;EAAG,OAAO,EAAE,KAAK,OAAO,EAAE,WAAW,KAAK,CAAC,CAAC;CAAE,CAAC;AACjH,CAAC;AACD,MAAM,gBAAgB,KAAK,OAAO;CAAE,QAAQ,SAAS;EAAC;EAAK;EAAK;CAAG,CAAC;CAAG,MAAM;CAAG,SAAS;AAAE,CAAC;AAC5F,MAAM,sBAAsB,KAAK,OAAO;CACtC,YAAY;CACZ,QAAQ,EAAE,CAAC;CACX,MAAM,EAAE,CAAC;CACT,WAAW,EAAE,CAAC;CACd,WAAW,EAAE,CAAC;CACd,OAAO,KAAK,MACV,KAAK,OAAO;EACV,MAAM;EACN,QAAQ,SAAS;GAAC;GAAS;GAAY;GAAW;GAAa;EAAY,CAAC;EAC5E,OAAO;EACP,SAAS;EACT,QAAQ,EAAE,CAAC;CACb,CAAC,CACH;AACF,CAAC;AACD,MAAM,mBAAmB,KAAK,OAAO;CACnC,MAAM;CACN,OAAO,KAAK,MAAM,KAAK,OAAO;EAAE,OAAO;EAAG,MAAM,KAAK,MAAM,aAAa;CAAE,CAAC,CAAC;CAC5E,QAAQ,EAAE,KAAK,QAAQ,IAAI,CAAC;CAC5B,UAAU,EAAE,KAAK,QAAQ,IAAI,CAAC;AAChC,CAAC;AACD,MAAM,QAAQ,CACZ;CAAE,MAAM;CAAgB,IAAI;CAAkB,UAAU;CAAM,QAAQ;AAAE,GACxE;CAAE,MAAM;CAAa,IAAI;CAAkB,UAAU;CAAM,QAAQ;AAAE,CACvE;AACA,MAAa,eAAe,kBAAkB;CAC5C,SAAS;CACT,SAAS,CAAC;CACV,MAAO,CAAC,UAAU,WAAW,CAAC,CAAW,SAAS,UAAU;EAC1D;GACE,IAAI;GACJ;GACA,UAAU;GACV,MAAM;GACN,QAAQ;GACR,gBAAgB;GAChB,aAAa;GACb,YAAY,MAAM,KAAK,UAAU;IAAE,GAAG;IAAM,UAAU,KAAK,SAAS;GAAe,EAAE;GACrF,WAAW,iBAAiB,KAAK,OAAO,EAAE,WAAW,KAAK,MAAM,YAAY,EAAE,CAAC,CAAC;EAClF;EACA;GACE,IAAI;GACJ;GACA,UAAU;GACV,MAAM;GACN,QAAQ;GACR,gBAAgB;GAChB,aAAa;GACb,YAAY;GACZ,MAAM;IACJ,UAAU;IACV,aAAa;IACb,QAAQ,KAAK,OAAO;KAAE,QAAQ,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;KAAG,SAAS,EAAE,CAAC;KAAG,MAAM,EAAE,CAAC;IAAE,CAAC;GAC1F;GACA,WAAW,iBAAiB,KAAK,OAAO,EAAE,UAAU,aAAa,CAAC,GAAG,GAAG;EAC1E;EACA;GACE,IAAI;GACJ;GACA,UAAU;GACV,MAAM;GACN,QAAQ;GACR,gBAAgB;GAChB,aAAa;GACb,YAAY,CAAC,GAAG,OAAO;IAAE,MAAM;IAAS,IAAI;IAAS,UAAU;IAAO,QAAQ;GAAE,CAAC;GACjF,WAAW,iBAAiB,KAAK,OAAO,EAAE,UAAU,aAAa,CAAC,CAAC;EACrE;EAEA,GAAI,UAAU,cACV;GACE;IACE,IAAI;IACJ;IACA,UAAU;IACV,MAAM;IACN,QAAQ;IACR,gBAAgB;IAChB,aAAa;IACb,YAAY,CAAC;KAAE,MAAM;KAAgB,IAAI;KAAkB,UAAU;KAAM,QAAQ;IAAE,CAAC;IACtF,WAAW,iBAAiB,cAAc;GAC5C;GACA;IACE,IAAI;IACJ;IACA,UAAU;IACV,MAAM;IACN,QAAQ;IACR,gBAAgB;IAChB,aAAa;IACb,YAAY,CAAC;KAAE,MAAM;KAAgB,IAAI;KAAkB,UAAU;KAAM,QAAQ;IAAE,CAAC;IACtF,MAAM;KAAE,UAAU;KAAM,aAAa;KAAoB,QAAQ;IAAe;IAChF,WAAW,iBAAiB,cAAc;GAC5C;GACA;IACE,IAAI;IACJ;IACA,UAAU;IACV,MAAM;IACN,QAAQ;IACR,gBAAgB;IAChB,aAAa;IACb,WAAW,iBACT,KAAK,OAAO;KACV,YAAY;KACZ,SAAS,EAAE,CAAC;KACZ,aAAa,EAAE,CAAC;KAChB,OAAO,KAAK,MAAM,KAAK,OAAO;MAAE,MAAM;MAAG,cAAc,EAAE,CAAC;KAAE,CAAC,CAAC;KAC9D,QAAQ,KAAK,MAAM,KAAK,OAAO;MAAE,QAAQ;MAAG,MAAM;KAAE,CAAC,CAAC;IACxD,CAAC,CACH;GACF;GACA;IACE,IAAI;IACJ;IACA,UAAU;IACV,MAAM;IACN,QAAQ;IACR,gBAAgB;IAChB,aAAa;IACb,MAAM;KACJ,UAAU;KACV,aAAa;KACb,QAAQ,KAAK,MAAM,CACjB,KAAK,OAAO;MAAE,MAAM,KAAK,QAAQ,iBAAiB;MAAG,QAAQ;MAAG,QAAQ,EAAE,CAAC;MAAG,MAAM,EAAE,CAAC;KAAE,CAAC,GAC1F,KAAK,OAAO;MAAE,MAAM,KAAK,QAAQ,YAAY;MAAG,QAAQ;MAAG,SAAS,EAAE,CAAC;MAAG,MAAM,EAAE,CAAC;KAAE,CAAC,CACxF,CAAC;IACH;IACA,WAAW,iBAAiB,KAAK,OAAO;KAAE,WAAW;KAAG,YAAY;IAAE,CAAC,GAAG,GAAG;GAC/E;EACF,IACA,CAAC;EAEL,GAAI,UAAU,WACV,CACE;GACE,IAAI;GACJ,OAAO;GACP,UAAU;GACV,MAAM;GACN,QAAQ;GACR,gBAAgB;GAChB,aAAa;GACb,WAAW,iBAAiB,mBAAmB;EACjD,GACA;GACE,IAAI;GACJ,OAAO;GACP,UAAU;GACV,MAAM;GACN,QAAQ;GACR,gBAAgB;GAChB,aAAa;GACb,YAAY,CAAC;IAAE,MAAM;IAAQ,IAAI;IAAkB,UAAU;IAAM,QAAQ,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;GAAE,CAAC;GAC1G,WAAW,iBAAiB,gBAAgB;EAC9C,CACF,IACA,CAAC;CACP,CAAC;CACD,SAAU,CAAC,UAAU,WAAW,CAAC,CAAW,SAAS,UAAU;EAC7D;GACE,IAAI;GACJ;GACA,SAAS;GACT,QAAQ;GACR,MAAM;GACN,WAAW;GACX,aAAa;GACb,OAAO;EACT;EACA;GACE,IAAI;GACJ;GACA,SAAS;GACT,QAAQ;GACR,MAAM;GACN,WAAW;GACX,aAAa;GACb,OAAO;EACT;EACA;GACE,IAAI;GACJ;GACA,SAAS;GACT,QAAQ;GACR,MAAM;GACN,WAAW;GACX,aAAa;GACb,OAAO;EACT;EACA;GACE,IAAI;GACJ;GACA,SAAS;GACT,QAAQ;GACR,MAAM;GACN,WAAW;GACX,aAAa;GACb,OAAO;EACT;CACF,CAAC;AACH,CAAC"}
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_worktreeOperations = require("../worktreeOperations-MgIVDDu3.cjs");
5
+ const require_worktreeOperations = require("../worktreeOperations-C6_xikos.cjs");
6
6
  let node_fs = require("node:fs");
7
7
  node_fs = require_worktreeOperations.__toESM(node_fs, 1);
8
8
  let node_os = require("node:os");
@@ -1,4 +1,4 @@
1
- import { _ as NETWORK_TIMEOUT_MS, a as GIT_WORKTREE_LIFECYCLE_EVENT, b as createWorktreeGit, c as isWorktreeLifecycleEvent, d as registryFile, f as readJson, g as invalidRequest, h as HubUnavailableError, i as GIT_SESSION_CHANGED_EVENT, l as credentialsFile, m as DoomGitExpectedError, n as createWorktreeRegistry, o as createWorktreeMessageInbox, p as writeJsonAtomic, r as validRefName, s as isSessionChangedEvent, t as createWorktreeOperations, u as doomGitRoot, v as READ_TIMEOUT_MS, x as runGit, y as REBASE_TIMEOUT_MS } from "../worktreeOperations-CaqwGsD_.mjs";
1
+ import { _ as NETWORK_TIMEOUT_MS, a as GIT_WORKTREE_LIFECYCLE_EVENT, b as createWorktreeGit, c as isWorktreeLifecycleEvent, d as registryFile, f as readJson, g as invalidRequest, h as HubUnavailableError, i as GIT_SESSION_CHANGED_EVENT, l as credentialsFile, m as DoomGitExpectedError, n as createWorktreeRegistry, o as createWorktreeMessageInbox, p as writeJsonAtomic, r as validRefName, s as isSessionChangedEvent, t as createWorktreeOperations, u as doomGitRoot, v as READ_TIMEOUT_MS, x as runGit, y as REBASE_TIMEOUT_MS } from "../worktreeOperations-2PaaLPTF.mjs";
2
2
  import fs from "node:fs";
3
3
  import os from "node:os";
4
4
  import path from "node:path";
package/dist/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_worktreeOperations = require("./worktreeOperations-MgIVDDu3.cjs");
2
+ const require_worktreeOperations = require("./worktreeOperations-C6_xikos.cjs");
3
3
  //#region src/services/extensionService/index.ts
4
4
  var DefaultGitExtensionService = class {
5
5
  async execute() {
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { b as createWorktreeGit, t as createWorktreeOperations } from "./worktreeOperations-CaqwGsD_.mjs";
1
+ import { b as createWorktreeGit, t as createWorktreeOperations } from "./worktreeOperations-2PaaLPTF.mjs";
2
2
  //#region src/services/extensionService/index.ts
3
3
  var DefaultGitExtensionService = class {
4
4
  async execute() {
@@ -985,20 +985,19 @@ function createWorktreeOperations(deps) {
985
985
  const peer = peerFor(context, record);
986
986
  const delivery = readSessionDelivery();
987
987
  if (delivery === void 0) return requireMessageInbox().receive(record.id);
988
- return delivery.inbox({
988
+ const entries = (await delivery.inbox({
989
989
  consumed: false,
990
990
  metadata: { worktreeId: record.id }
991
- }).filter((entry) => entry.senderKey === peer.sessionId && (entry.state === "admitted" || entry.state === "recovery_required") && (peer.party === "parent" ? entry.kind === GIT_WORKTREE_REPORT_KIND : entry.kind === GIT_WORKTREE_MESSAGE_KIND || entry.kind === GIT_WORKTREE_DELEGATION_KIND)).map((entry) => {
992
- delivery.consume(entry.deliveryId);
993
- return {
994
- version: 1,
995
- worktreeId: record.id,
996
- fromSessionId: entry.senderKey,
997
- from: peer.party === "parent" ? "child" : "parent",
998
- text: entry.state === "recovery_required" ? `[Recovery required: prompt admission was not confirmed] ${entry.metadata.text ?? entry.prompt}` : entry.metadata.text ?? entry.prompt,
999
- sentAt: entry.metadata.sentAt ?? ""
1000
- };
1001
- });
991
+ })).filter((entry) => entry.senderKey === peer.sessionId && (entry.state === "admitted" || entry.state === "recovery_required") && (peer.party === "parent" ? entry.kind === GIT_WORKTREE_REPORT_KIND : entry.kind === GIT_WORKTREE_MESSAGE_KIND || entry.kind === GIT_WORKTREE_DELEGATION_KIND));
992
+ for (const entry of entries) await delivery.consume(entry.deliveryId);
993
+ return entries.map((entry) => ({
994
+ version: 1,
995
+ worktreeId: record.id,
996
+ fromSessionId: entry.senderKey,
997
+ from: peer.party === "parent" ? "child" : "parent",
998
+ text: entry.state === "recovery_required" ? `[Recovery required: prompt admission was not confirmed] ${entry.metadata.text ?? entry.prompt}` : entry.metadata.text ?? entry.prompt,
999
+ sentAt: entry.metadata.sentAt ?? ""
1000
+ }));
1002
1001
  },
1003
1002
  async prune(context, dryRun) {
1004
1003
  const { root, store, records } = await resolve(context);
@@ -1062,4 +1061,4 @@ function createWorktreeOperations(deps) {
1062
1061
  //#endregion
1063
1062
  export { NETWORK_TIMEOUT_MS as _, GIT_WORKTREE_LIFECYCLE_EVENT as a, createWorktreeGit as b, isWorktreeLifecycleEvent as c, registryFile as d, readJson as f, invalidRequest as g, HubUnavailableError as h, GIT_SESSION_CHANGED_EVENT as i, credentialsFile as l, DoomGitExpectedError as m, createWorktreeRegistry as n, createWorktreeMessageInbox as o, writeJsonAtomic as p, validRefName as r, isSessionChangedEvent as s, createWorktreeOperations as t, doomGitRoot as u, READ_TIMEOUT_MS as v, runGit as x, REBASE_TIMEOUT_MS as y };
1064
1063
 
1065
- //# sourceMappingURL=worktreeOperations-CaqwGsD_.mjs.map
1064
+ //# sourceMappingURL=worktreeOperations-2PaaLPTF.mjs.map