@adonis-agora/agent 0.54.0 → 0.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/dist/providers/agent_provider.d.ts.map +1 -1
  3. package/dist/providers/agent_provider.js +139 -10
  4. package/dist/providers/agent_provider.js.map +1 -1
  5. package/dist/src/ag-ui/adapter.d.ts +26 -0
  6. package/dist/src/ag-ui/adapter.d.ts.map +1 -0
  7. package/dist/src/ag-ui/adapter.js +295 -0
  8. package/dist/src/ag-ui/adapter.js.map +1 -0
  9. package/dist/src/ag-ui/encoder.d.ts +107 -0
  10. package/dist/src/ag-ui/encoder.d.ts.map +1 -0
  11. package/dist/src/ag-ui/encoder.js +519 -0
  12. package/dist/src/ag-ui/encoder.js.map +1 -0
  13. package/dist/src/ag-ui/index.d.ts +12 -0
  14. package/dist/src/ag-ui/index.d.ts.map +1 -0
  15. package/dist/src/ag-ui/index.js +12 -0
  16. package/dist/src/ag-ui/index.js.map +1 -0
  17. package/dist/src/ag-ui/input.d.ts +72 -0
  18. package/dist/src/ag-ui/input.d.ts.map +1 -0
  19. package/dist/src/ag-ui/input.js +216 -0
  20. package/dist/src/ag-ui/input.js.map +1 -0
  21. package/dist/src/ag-ui/interrupt-id.d.ts +27 -0
  22. package/dist/src/ag-ui/interrupt-id.d.ts.map +1 -0
  23. package/dist/src/ag-ui/interrupt-id.js +42 -0
  24. package/dist/src/ag-ui/interrupt-id.js.map +1 -0
  25. package/dist/src/ag-ui/stream.d.ts +28 -0
  26. package/dist/src/ag-ui/stream.d.ts.map +1 -0
  27. package/dist/src/ag-ui/stream.js +68 -0
  28. package/dist/src/ag-ui/stream.js.map +1 -0
  29. package/dist/src/ag-ui/types.d.ts +202 -0
  30. package/dist/src/ag-ui/types.d.ts.map +1 -0
  31. package/dist/src/ag-ui/types.js +33 -0
  32. package/dist/src/ag-ui/types.js.map +1 -0
  33. package/dist/src/agent-loop.d.ts.map +1 -1
  34. package/dist/src/agent-loop.js +1 -0
  35. package/dist/src/agent-loop.js.map +1 -1
  36. package/dist/src/agent-service.d.ts +28 -0
  37. package/dist/src/agent-service.d.ts.map +1 -1
  38. package/dist/src/agent-service.js +58 -5
  39. package/dist/src/agent-service.js.map +1 -1
  40. package/dist/src/ai-tool-ref.d.ts +26 -4
  41. package/dist/src/ai-tool-ref.d.ts.map +1 -1
  42. package/dist/src/ai-tool-ref.js +6 -1
  43. package/dist/src/ai-tool-ref.js.map +1 -1
  44. package/dist/src/confirmed-tool.d.ts +2 -2
  45. package/dist/src/confirmed-tool.d.ts.map +1 -1
  46. package/dist/src/confirmed-tool.js.map +1 -1
  47. package/dist/src/define_config.d.ts +8 -0
  48. package/dist/src/define_config.d.ts.map +1 -1
  49. package/dist/src/define_config.js.map +1 -1
  50. package/dist/src/guardrails/agent.d.ts.map +1 -1
  51. package/dist/src/guardrails/agent.js +11 -0
  52. package/dist/src/guardrails/agent.js.map +1 -1
  53. package/dist/src/index.d.ts +5 -3
  54. package/dist/src/index.d.ts.map +1 -1
  55. package/dist/src/index.js +5 -3
  56. package/dist/src/index.js.map +1 -1
  57. package/dist/src/mcp-client/options.d.ts +12 -0
  58. package/dist/src/mcp-client/options.d.ts.map +1 -1
  59. package/dist/src/mcp-client/tool-source.d.ts.map +1 -1
  60. package/dist/src/mcp-client/tool-source.js +2 -0
  61. package/dist/src/mcp-client/tool-source.js.map +1 -1
  62. package/dist/src/media/index.d.ts +1 -1
  63. package/dist/src/media/index.d.ts.map +1 -1
  64. package/dist/src/media/index.js +1 -1
  65. package/dist/src/media/index.js.map +1 -1
  66. package/dist/src/media/media-attachment-staging.d.ts +107 -6
  67. package/dist/src/media/media-attachment-staging.d.ts.map +1 -1
  68. package/dist/src/media/media-attachment-staging.js +173 -21
  69. package/dist/src/media/media-attachment-staging.js.map +1 -1
  70. package/dist/src/react/ag-ui.d.ts +41 -0
  71. package/dist/src/react/ag-ui.d.ts.map +1 -0
  72. package/dist/src/react/ag-ui.js +63 -0
  73. package/dist/src/react/ag-ui.js.map +1 -0
  74. package/dist/src/react/client.d.ts +12 -0
  75. package/dist/src/react/client.d.ts.map +1 -0
  76. package/dist/src/react/client.js +21 -0
  77. package/dist/src/react/client.js.map +1 -0
  78. package/dist/src/react/index.d.ts +3 -8
  79. package/dist/src/react/index.d.ts.map +1 -1
  80. package/dist/src/react/index.js +4 -20
  81. package/dist/src/react/index.js.map +1 -1
  82. package/dist/src/react/media.d.ts +18 -0
  83. package/dist/src/react/media.d.ts.map +1 -0
  84. package/dist/src/react/media.js +18 -0
  85. package/dist/src/react/media.js.map +1 -0
  86. package/dist/src/spi/agent-store.d.ts +29 -0
  87. package/dist/src/spi/agent-store.d.ts.map +1 -1
  88. package/dist/src/spi/agent-store.js.map +1 -1
  89. package/dist/src/spi/attachment-staging.d.ts +5 -0
  90. package/dist/src/spi/attachment-staging.d.ts.map +1 -1
  91. package/dist/src/spi/protocol-adapter.d.ts +57 -0
  92. package/dist/src/spi/protocol-adapter.d.ts.map +1 -0
  93. package/dist/src/spi/protocol-adapter.js +2 -0
  94. package/dist/src/spi/protocol-adapter.js.map +1 -0
  95. package/dist/src/spi/tool.d.ts +24 -0
  96. package/dist/src/spi/tool.d.ts.map +1 -1
  97. package/dist/src/stores/factory.d.ts +8 -2
  98. package/dist/src/stores/factory.d.ts.map +1 -1
  99. package/dist/src/stores/factory.js +8 -2
  100. package/dist/src/stores/factory.js.map +1 -1
  101. package/dist/src/stores/lucid-schema.d.ts.map +1 -1
  102. package/dist/src/stores/lucid-schema.js +2 -0
  103. package/dist/src/stores/lucid-schema.js.map +1 -1
  104. package/dist/src/stores/lucid.d.ts +12 -0
  105. package/dist/src/stores/lucid.d.ts.map +1 -1
  106. package/dist/src/stores/lucid.js +48 -1
  107. package/dist/src/stores/lucid.js.map +1 -1
  108. package/dist/src/stream-events.d.ts +2 -0
  109. package/dist/src/stream-events.d.ts.map +1 -1
  110. package/dist/src/testing/in-memory-store.d.ts +7 -0
  111. package/dist/src/testing/in-memory-store.d.ts.map +1 -1
  112. package/dist/src/testing/in-memory-store.js +37 -1
  113. package/dist/src/testing/in-memory-store.js.map +1 -1
  114. package/dist/src/tool-discovery.d.ts.map +1 -1
  115. package/dist/src/tool-discovery.js +27 -9
  116. package/dist/src/tool-discovery.js.map +1 -1
  117. package/dist/src/tool-filters.d.ts +33 -0
  118. package/dist/src/tool-filters.d.ts.map +1 -0
  119. package/dist/src/tool-filters.js +45 -0
  120. package/dist/src/tool-filters.js.map +1 -0
  121. package/dist/src/tool-registry.d.ts +33 -5
  122. package/dist/src/tool-registry.d.ts.map +1 -1
  123. package/dist/src/tool-registry.js +55 -11
  124. package/dist/src/tool-registry.js.map +1 -1
  125. package/dist/src/types.d.ts +16 -0
  126. package/dist/src/types.d.ts.map +1 -1
  127. package/package.json +22 -3
  128. package/skills/agent-setup/SKILL.md +36 -0
  129. package/skills/agent-tools/SKILL.md +19 -1
package/dist/src/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export const VERSION = '0.54.0';
1
+ export const VERSION = '0.56.0';
2
2
  // Re-export the configure hook from the package root so `node ace configure` finds it.
3
3
  // AdonisJS imports the package MAIN and reads `configure` off the module namespace —
4
4
  // the `./configure` subpath alone is never consulted.
@@ -9,7 +9,7 @@ export { utcDay } from './agent-deps.js';
9
9
  export { AgentDepsFactory, delegateToolName, normalizeDelegateEdge, registerDelegateTools, } from './agent-deps-factory.js';
10
10
  export { APPROVAL_EXPIRED_REASON, DEFAULT_MAX_AGENT_APPEARANCES, exposeStreamErrorDetails, MAX_DELEGATION_DEPTH, outcomeFrame, QuotaExceededError, RUN_FAILED_MESSAGE, RunCancelledError, runAgentLoop, settleAll, streamErrorCode, streamErrorFrame, withBuiltInTools, } from './agent-loop.js';
11
11
  export { AgentRegistry } from './agent-registry.js';
12
- export { AgentService, AttachmentRefusedError, ChatQueueError, RegenerateNeedsThreadError, } from './agent-service.js';
12
+ export { AgentService, AttachmentRefusedError, ChatQueueError, RegenerateNeedsThreadError, UnknownAgentError, } from './agent-service.js';
13
13
  export { AGENT_TOOL_BRAND, AI_TOOL_META_KEY, AiTool, defineTool, isBrandedFunctionalTool, readAiToolMeta, toolNameFromClass, } from './ai-tool-ref.js';
14
14
  export { AnonymousActorResolver, } from './anonymous-actor-resolver.js';
15
15
  export { ClosedToolAuthorizer, DefaultToolAuthorizer } from './authorizer.js';
@@ -58,6 +58,7 @@ export { findCatalogModel, ModelNotAllowedError, staticModelCatalog, toModelCata
58
58
  export * from './spi/model-provider.js';
59
59
  export * from './spi/pricing-store.js';
60
60
  export * from './spi/processors.js';
61
+ export * from './spi/protocol-adapter.js';
61
62
  export { exhaustedWindow, isQuotaProvider, QuotaBlockedError, quotaPeriodRange, quotaUsedRatio, quotaWarning, } from './spi/quota-provider.js';
62
63
  export * from './spi/quota-store.js';
63
64
  export * from './spi/reranker.js';
@@ -75,8 +76,9 @@ export { LucidPricingStore } from './stores/lucid-pricing.js';
75
76
  export { AGENT_TABLES, createAgentTables, createTableStatements, dropAgentTables, dropTableStatements, ensureAgentTables, ensureStreamFrameTable, schemaRunner, streamFrameTableStatement, } from './stores/lucid-schema.js';
76
77
  export { DEFAULT_STRUCTURED_OUTPUT_INSTRUCTION, extractJson, repairInstruction, StructuredOutputError, validateStructured, } from './structured-output.js';
77
78
  export { discoverTools, registerFunctionalTool, registerToolExport, registerToolsFromBarrel, } from './tool-discovery.js';
79
+ export * from './tool-filters.js';
78
80
  export { ALL_AGENTS } from './tool-presentation.js';
79
- export { ClosedRolesPolicy, DefaultRolesPolicy, ToolForbiddenError, ToolInputInvalidError, ToolNotFoundError, ToolRegistry, } from './tool-registry.js';
81
+ export { ClosedRolesPolicy, DefaultRolesPolicy, ToolDisabledError, ToolForbiddenError, ToolInputInvalidError, ToolNotFoundError, ToolRegistry, } from './tool-registry.js';
80
82
  export { DEFAULT_TOOL_TRANSIENT_RETRY_ATTEMPTS, DEFAULT_TOOL_TRANSIENT_RETRY_BACKOFF_MS, invokeWithTransientRetry, isTransientToolError, } from './tool-retry.js';
81
83
  export { createNoopEmitUi, createUiCollector, mergeUi, unwrapToolStepOutput, wrapToolStepOutput, } from './tool-ui.js';
82
84
  export { observeTurnFrames, withTurnFrames, } from './turn-frames.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
2
2
  import type { jsonSchemaValidator } from '@modelcontextprotocol/sdk/validation';
3
3
  import type { ToolTransientRetrySetting } from '../tool-retry.js';
4
+ import type { Actor } from '../types.js';
4
5
  import type { McpToolKindPolicy } from './tool-kind.js';
5
6
  /** A server this process starts and talks to over its stdin/stdout. */
6
7
  export interface McpStdioTransportConfig {
@@ -77,6 +78,17 @@ export interface McpServerConfig {
77
78
  roles?: string[];
78
79
  /** Ability every tool from this server is checked against by an ability-aware `RolesPolicy`. */
79
80
  ability?: string;
81
+ /**
82
+ * Per-actor gate applied to every tool from this server, like a tool's own `canUse` — runs after
83
+ * the `RolesPolicy`, on both the offered list and the call. Omit → the role gate alone decides.
84
+ */
85
+ canUse?: (actor: Actor) => boolean | Promise<boolean>;
86
+ /**
87
+ * Whether this server's tools exist in this deployment at all — a boolean, or a predicate
88
+ * re-read every turn (a feature flag). A disabled server's tools are still imported, so turning
89
+ * it back on needs no refresh; they are just never offered or invocable. Omit → enabled.
90
+ */
91
+ enabled?: boolean | (() => boolean | Promise<boolean>);
80
92
  /** Cap on the MCP initialize handshake. Default 10s. */
81
93
  connectTimeoutMs?: number;
82
94
  /** Cap on `tools/list` and on every tool call. Default 30s. */
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/mcp-client/options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/mcp-client/options.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tool-source.d.ts","sourceRoot":"","sources":["../../../src/mcp-client/tool-source.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAY,QAAQ,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAU/D,gGAAgG;AAChG,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,WAAW,CAAC;IACrB,gGAAgG;IAChG,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,yGAAyG;AACzG,qBAAa,gBAAiB,SAAQ,KAAK;aAEvB,UAAU,EAAE,MAAM;aAClB,QAAQ,EAAE,MAAM;IAFlC,YACkB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChC,OAAO,EAAE,MAAM,EAIhB;CACF;AAoBD;;;;;;;;;;;GAWG;AACH,qBAAa,aAAa;IAKtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAL1B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,UAAU,CAA8B;IAEhD,YACmB,MAAM,EAAE,eAAe,EACvB,MAAM,CAAC,EAAE,SAAS,YAAA,EACjC;IAEJ,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,mGAAmG;IAC7F,MAAM,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAczC;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAK3B;IAED,6FAA6F;YAC/E,YAAY;IA2B1B,OAAO,CAAC,UAAU;IAQlB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAqCtB,OAAO,CAAC,QAAQ;YAcF,QAAQ;IAgBtB,oGAAoG;YACtF,OAAO;IAgBrB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,YAAY;YAYN,OAAO;IAerB,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,UAAU;IAMlB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,gBAAgB;CAGzB"}
1
+ {"version":3,"file":"tool-source.d.ts","sourceRoot":"","sources":["../../../src/mcp-client/tool-source.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAY,QAAQ,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAU/D,gGAAgG;AAChG,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,WAAW,CAAC;IACrB,gGAAgG;IAChG,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,yGAAyG;AACzG,qBAAa,gBAAiB,SAAQ,KAAK;aAEvB,UAAU,EAAE,MAAM;aAClB,QAAQ,EAAE,MAAM;IAFlC,YACkB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChC,OAAO,EAAE,MAAM,EAIhB;CACF;AAoBD;;;;;;;;;;;GAWG;AACH,qBAAa,aAAa;IAKtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAL1B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,UAAU,CAA8B;IAEhD,YACmB,MAAM,EAAE,eAAe,EACvB,MAAM,CAAC,EAAE,SAAS,YAAA,EACjC;IAEJ,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,mGAAmG;IAC7F,MAAM,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAczC;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAK3B;IAED,6FAA6F;YAC/E,YAAY;IA2B1B,OAAO,CAAC,UAAU;IAQlB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAuCtB,OAAO,CAAC,QAAQ;YAcF,QAAQ;IAgBtB,oGAAoG;YACtF,OAAO;IAgBrB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,YAAY;YAYN,OAAO;IAerB,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,UAAU;IAMlB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,gBAAgB;CAGzB"}
@@ -141,9 +141,11 @@ export class McpToolSource {
141
141
  inputSchema,
142
142
  ...(this.config.roles !== undefined ? { roles: this.config.roles } : {}),
143
143
  ...(this.config.ability !== undefined ? { ability: this.config.ability } : {}),
144
+ ...(this.config.enabled !== undefined ? { enabled: this.config.enabled } : {}),
144
145
  };
145
146
  const handler = {
146
147
  execute: (input) => this.callTool(tool.name, input, spec.kind),
148
+ ...(this.config.canUse !== undefined ? { canUse: this.config.canUse } : {}),
147
149
  };
148
150
  return { spec, handler, remoteName: tool.name, serverName: this.config.name };
149
151
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tool-source.js","sourceRoot":"","sources":["../../../src/mcp-client/tool-source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-source.js","sourceRoot":"","sources":["../../../src/mcp-client/tool-source.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,5 @@
3
3
  * peer). `attachmentStores.media()` in `config/agent.ts` builds {@link MediaAttachmentStaging} from
4
4
  * the app's `MediaManager`; use the class directly to wire it over a media setup of your own.
5
5
  */
6
- export { DEFAULT_AGENT_MEDIA_COLLECTION, DEFAULT_AGENT_MEDIA_OWNER_TYPE, MediaAttachmentStaging, type MediaAttachmentsOptions, type MediaDiskLike, type MediaRecordLike, type MediaStorageLike, type MediaStoreLike, } from './media-attachment-staging.js';
6
+ export { type BeginMediaUploadInput, type BeginMediaUploadResult, DEFAULT_AGENT_MEDIA_COLLECTION, DEFAULT_AGENT_MEDIA_OWNER_TYPE, DEFAULT_AGENT_MEDIA_TUS_BASE_PATH, MediaAttachmentStaging, type MediaAttachmentStagingDeps, type MediaAttachmentsOptions, type MediaDiskLike, type MediaRecordLike, type MediaResumableLike, type MediaStorageLike, type MediaStoreLike, MediaUploadRefusedError, type ReferencedMediaLike, } from './media-attachment-staging.js';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/media/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,8BAA8B,EAC9B,8BAA8B,EAC9B,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/media/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,8BAA8B,EAC9B,8BAA8B,EAC9B,iCAAiC,EACjC,sBAAsB,EACtB,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,uBAAuB,EACvB,KAAK,mBAAmB,GACzB,MAAM,+BAA+B,CAAC"}
@@ -3,5 +3,5 @@
3
3
  * peer). `attachmentStores.media()` in `config/agent.ts` builds {@link MediaAttachmentStaging} from
4
4
  * the app's `MediaManager`; use the class directly to wire it over a media setup of your own.
5
5
  */
6
- export { DEFAULT_AGENT_MEDIA_COLLECTION, DEFAULT_AGENT_MEDIA_OWNER_TYPE, MediaAttachmentStaging, } from './media-attachment-staging.js';
6
+ export { DEFAULT_AGENT_MEDIA_COLLECTION, DEFAULT_AGENT_MEDIA_OWNER_TYPE, DEFAULT_AGENT_MEDIA_TUS_BASE_PATH, MediaAttachmentStaging, MediaUploadRefusedError, } from './media-attachment-staging.js';
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/media/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,8BAA8B,EAC9B,8BAA8B,EAC9B,sBAAsB,GAMvB,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/media/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAGL,8BAA8B,EAC9B,8BAA8B,EAC9B,iCAAiC,EACjC,sBAAsB,EAQtB,uBAAuB,GAExB,MAAM,+BAA+B,CAAC"}
@@ -37,6 +37,66 @@ export interface MediaDiskLike {
37
37
  contentType?: string;
38
38
  }): Promise<string>;
39
39
  delete(key: string): Promise<void>;
40
+ /** Needed for resumable uploads only — whether the assembled object has landed. */
41
+ exists?(key: string): Promise<boolean>;
42
+ /** Needed for resumable uploads only — the assembled object's size. */
43
+ getMetaData?(key: string): Promise<{
44
+ contentLength: number;
45
+ }>;
46
+ }
47
+ /**
48
+ * `@adonis-agora/media`'s `ResumableUploadManager` (`media.resumable`), the part used here: open a
49
+ * tus session the bytes then stream to over the media library's own tus routes, or abort one.
50
+ */
51
+ export interface MediaResumableLike {
52
+ createUpload(input: {
53
+ disk: string;
54
+ key: string;
55
+ size?: number;
56
+ contentType?: string;
57
+ metadata?: Record<string, string>;
58
+ }): Promise<{
59
+ id: string;
60
+ }>;
61
+ abort(id: string): Promise<void>;
62
+ }
63
+ /** What `beginUpload` takes: the file as the client describes it, before any byte moves. */
64
+ export interface BeginMediaUploadInput {
65
+ actor: Actor;
66
+ filename: string;
67
+ contentType: string;
68
+ /** Exact byte length — tus needs it up front, and completion is checked against it. */
69
+ size: number;
70
+ }
71
+ /** A tus session opened for one attachment. Stream the bytes to `location`, then complete. */
72
+ export interface BeginMediaUploadResult {
73
+ /** The attachment's id — what the chat turn sends as `{ mediaId }`. */
74
+ mediaId: string;
75
+ /** The tus upload id. */
76
+ uploadId: string;
77
+ /** The tus resource to `PATCH` the bytes to (relative to the app's origin). */
78
+ location: string;
79
+ }
80
+ /** A refusal of an upload request, carrying the HTTP status the route answers with. */
81
+ export declare class MediaUploadRefusedError extends Error {
82
+ readonly status: 400 | 409 | 413 | 415 | 422 | 501;
83
+ constructor(status: 400 | 409 | 413 | 415 | 422 | 501, message: string);
84
+ }
85
+ /** The agent store, the part used here — which media a live message of this actor carries. */
86
+ export interface ReferencedMediaLike {
87
+ referencedMediaIds?(actorRef: string, mediaIds: readonly string[]): Promise<string[]>;
88
+ }
89
+ /** What {@link MediaAttachmentStaging} is built from. */
90
+ export interface MediaAttachmentStagingDeps {
91
+ storage: MediaStorageLike;
92
+ store: MediaStoreLike;
93
+ /** Lets media referenced from the actor's own threads resolve (see `canAccess`). */
94
+ agentStore?: ReferencedMediaLike;
95
+ /**
96
+ * `media.resumable` — resumable (tus) uploads. Absent or `null` (`config/media.ts` has no
97
+ * `uploads.resumable`) → uploads are multipart only.
98
+ */
99
+ uploads?: MediaResumableLike | null;
40
100
  }
41
101
  /** `@adonis-agora/media`'s `StorageManager`, the part used here. */
42
102
  export interface MediaStorageLike {
@@ -67,20 +127,29 @@ export interface MediaAttachmentsOptions {
67
127
  disk: MediaDiskLike;
68
128
  }) => string | Promise<string>;
69
129
  /**
70
- * Who may attach a file: by default only the actor that uploaded it (`allowed`). Widen or narrow
71
- * it here — e.g. let a support agent attach a customer's upload.
130
+ * Who may attach a file. By default (`allowed`): the actor that uploaded it, or one a message in
131
+ * one of the actor's OWN threads already carries (a fork, a regenerate) — the latter needs an
132
+ * agent store with `referencedMediaIds`, which both shipped stores have. Widen or narrow it here —
133
+ * e.g. let a support agent attach a customer's upload.
72
134
  */
73
135
  canAccess?: (input: {
74
136
  record: MediaRecordLike;
75
137
  actor: Actor;
76
138
  allowed: boolean;
77
139
  }) => boolean | Promise<boolean>;
140
+ /**
141
+ * Where `@adonis-agora/media` mounts its tus routes (`uploads.resumable.routes.prefix` in
142
+ * `config/media.ts`). Default `/media/uploads/tus`. The `location` a resumable upload answers is
143
+ * `<tusBasePath>/<uploadId>`.
144
+ */
145
+ tusBasePath?: string;
78
146
  /** Clock and id seams, for tests. */
79
147
  clock?: () => Date;
80
148
  idGenerator?: () => string;
81
149
  }
82
150
  export declare const DEFAULT_AGENT_MEDIA_COLLECTION = "agent-attachments";
83
151
  export declare const DEFAULT_AGENT_MEDIA_OWNER_TYPE = "agent-actor";
152
+ export declare const DEFAULT_AGENT_MEDIA_TUS_BASE_PATH = "/media/uploads/tus";
84
153
  /**
85
154
  * Chat attachments stored as media rows in their own collection, one owner per actor, on any Drive
86
155
  * disk — S3, GCS, R2, the local filesystem. Uploads land at
@@ -99,16 +168,48 @@ export declare class MediaAttachmentStaging implements AttachmentStagingStore {
99
168
  private readonly now;
100
169
  private readonly newId;
101
170
  private warnedInline;
102
- constructor(deps: {
103
- storage: MediaStorageLike;
104
- store: MediaStoreLike;
105
- }, options?: MediaAttachmentsOptions);
171
+ constructor(deps: MediaAttachmentStagingDeps, options?: MediaAttachmentsOptions);
106
172
  describe(): AttachmentStagingDescription;
173
+ /**
174
+ * Open a tus session for one file, owned by `actor`. Everything is validated here, before any
175
+ * byte moves. The record exists from now on, `pending` until {@link completeUpload} sees the bytes.
176
+ */
177
+ beginUpload(input: BeginMediaUploadInput): Promise<BeginMediaUploadResult>;
178
+ /**
179
+ * Confirm the bytes of a {@link beginUpload} landed, and whole. `null` for an unknown id or one
180
+ * that is not `actor`'s; `409` while the bytes are still missing; `422` (and the record dropped)
181
+ * when what arrived is not the size that was declared. Idempotent on a ready record.
182
+ */
183
+ completeUpload(input: {
184
+ actor: Actor;
185
+ mediaId: string;
186
+ }): Promise<MessageAttachment | null>;
187
+ /** The actor drops one of their own attachments — aborting its upload if still in flight. */
188
+ discard(input: {
189
+ actor: Actor;
190
+ mediaId: string;
191
+ }): Promise<boolean>;
107
192
  private get diskName();
108
193
  stage(input: StageAttachmentInput): Promise<MessageAttachment>;
194
+ /**
195
+ * The attachment for `mediaId`, or `null` when it is unknown or this actor may not use it. The
196
+ * actor may use media they own, and media a message in one of THEIR threads already carries (a
197
+ * fork, a regenerate) — never anything else, unless `canAccess` says so.
198
+ */
109
199
  resolve(input: ResolveAttachmentInput): Promise<MessageAttachment | null>;
200
+ private canUse;
201
+ private defaultAccess;
110
202
  /** Delete an upload and its row. */
111
203
  remove(mediaId: string): Promise<void>;
204
+ private validate;
205
+ private pathFor;
206
+ private saveRecord;
207
+ private ownRecord;
208
+ /**
209
+ * A ready record as-is; a pending one promoted to ready once its bytes are on the disk at exactly
210
+ * the declared size. `'missing'` while they are not; `'mismatch'` when they arrived at another size.
211
+ */
212
+ private ensureReady;
112
213
  private isOurs;
113
214
  private toAttachment;
114
215
  }
@@ -1 +1 @@
1
- {"version":3,"file":"media-attachment-staging.d.ts","sourceRoot":"","sources":["../../../src/media/media-attachment-staging.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"media-attachment-staging.d.ts","sourceRoot":"","sources":["../../../src/media/media-attachment-staging.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,4BAA4B,EAC5B,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAQ5D,2DAA2D;AAC3D,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,gEAAgE;AAChE,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACxD,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACpF;AAED,8EAA8E;AAC9E,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1F,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,YAAY,CACV,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9D,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,mFAAmF;IACnF,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,uEAAuE;IACvE,WAAW,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/D;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,KAAK,EAAE;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACnC,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5B,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC;AAED,4FAA4F;AAC5F,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,uFAAuF;IACvF,IAAI,EAAE,MAAM,CAAC;CACd;AAED,8FAA8F;AAC9F,MAAM,WAAW,sBAAsB;IACrC,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,uFAAuF;AACvF,qBAAa,uBAAwB,SAAQ,KAAK;IAE9C,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;IADpD,YACW,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAClD,OAAO,EAAE,MAAM,EAIhB;CACF;AASD,8FAA8F;AAC9F,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACvF;AAED,yDAAyD;AACzD,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,KAAK,EAAE,cAAc,CAAC;IACtB,oFAAoF;IACpF,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC;;;OAGG;IACH,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACrC;AAED,oEAAoE;AACpE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;CACpC;AAED,iEAAiE;AACjE,MAAM,WAAW,uBAAuB;IACtC,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uFAAuF;IACvF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wFAAwF;IACxF,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAClC,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,4EAA4E;IAC5E,UAAU,CAAC,EAAE,CACX,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE;QAAE,IAAI,EAAE,aAAa,CAAA;KAAE,KAC7B,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;QAClB,MAAM,EAAE,eAAe,CAAC;QACxB,KAAK,EAAE,KAAK,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;KAClB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,8BAA8B,sBAAsB,CAAC;AAClE,eAAO,MAAM,8BAA8B,gBAAgB,CAAC;AAC5D,eAAO,MAAM,iCAAiC,uBAAuB,CAAC;AAatE;;;;;;;GAOG;AACH,qBAAa,sBAAuB,YAAW,sBAAsB;IAUjE,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAV1B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,YAAY,CAAS;IAE7B,YACmB,IAAI,EAAE,0BAA0B,EAChC,OAAO,GAAE,uBAA4B,EAQvD;IAED,QAAQ,IAAI,4BAA4B,CAMvC;IAED;;;OAGG;IACG,WAAW,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAiC/E;IAED;;;;OAIG;IACG,cAAc,CAAC,KAAK,EAAE;QAC1B,KAAK,EAAE,KAAK,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAepC;IAED,6FAA6F;IACvF,OAAO,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAKxE;IAED,OAAO,KAAK,QAAQ,GAEnB;IAEK,KAAK,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAiBnE;IAED;;;;OAIG;IACG,OAAO,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAQ9E;YAEa,MAAM;YAMN,aAAa;IAO3B,oCAAoC;IAC9B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAY3C;IAED,OAAO,CAAC,QAAQ;IAkBhB,OAAO,CAAC,OAAO;YAID,UAAU;YA+BV,SAAS;IAMvB;;;OAGG;YACW,WAAW;IAazB,OAAO,CAAC,MAAM;YAIA,YAAY;CAkC3B"}
@@ -1,6 +1,16 @@
1
1
  import { randomUUID } from 'node:crypto';
2
+ /** A refusal of an upload request, carrying the HTTP status the route answers with. */
3
+ export class MediaUploadRefusedError extends Error {
4
+ status;
5
+ constructor(status, message) {
6
+ super(message);
7
+ this.status = status;
8
+ this.name = 'MediaUploadRefusedError';
9
+ }
10
+ }
2
11
  export const DEFAULT_AGENT_MEDIA_COLLECTION = 'agent-attachments';
3
12
  export const DEFAULT_AGENT_MEDIA_OWNER_TYPE = 'agent-actor';
13
+ export const DEFAULT_AGENT_MEDIA_TUS_BASE_PATH = '/media/uploads/tus';
4
14
  const DEFAULT_URL_TTL_SECONDS = 7 * 24 * 60 * 60;
5
15
  const DEFAULT_MAX_BYTES = 20 * 1024 * 1024;
6
16
  const DEFAULT_ALLOWED_CONTENT_TYPES = [
@@ -41,7 +51,70 @@ export class MediaAttachmentStaging {
41
51
  this.newId = options.idGenerator ?? (() => randomUUID());
42
52
  }
43
53
  describe() {
44
- return { maxBytes: this.maxBytes, allowedContentTypes: this.allowed };
54
+ return {
55
+ maxBytes: this.maxBytes,
56
+ allowedContentTypes: this.allowed,
57
+ upload: this.deps.uploads ? 'resumable' : 'multipart',
58
+ };
59
+ }
60
+ /**
61
+ * Open a tus session for one file, owned by `actor`. Everything is validated here, before any
62
+ * byte moves. The record exists from now on, `pending` until {@link completeUpload} sees the bytes.
63
+ */
64
+ async beginUpload(input) {
65
+ const uploads = this.deps.uploads;
66
+ if (!uploads) {
67
+ throw new MediaUploadRefusedError(501, 'Resumable attachment uploads need `uploads.resumable` in config/media.ts.');
68
+ }
69
+ this.validate(input.filename, input.contentType, input.size);
70
+ const id = this.newId();
71
+ const fileName = safeFileName(input.filename);
72
+ const path = this.pathFor(input.actor, id, fileName);
73
+ const session = await uploads.createUpload({
74
+ disk: this.diskName,
75
+ key: path,
76
+ size: input.size,
77
+ contentType: input.contentType,
78
+ metadata: { agentMediaId: id },
79
+ });
80
+ await this.saveRecord({
81
+ id,
82
+ actor: input.actor,
83
+ fileName,
84
+ mimeType: input.contentType,
85
+ size: input.size,
86
+ path,
87
+ state: { status: 'pending', uploadId: session.id },
88
+ });
89
+ const base = (this.options.tusBasePath ?? DEFAULT_AGENT_MEDIA_TUS_BASE_PATH).replace(/\/+$/, '');
90
+ return { mediaId: id, uploadId: session.id, location: `${base}/${session.id}` };
91
+ }
92
+ /**
93
+ * Confirm the bytes of a {@link beginUpload} landed, and whole. `null` for an unknown id or one
94
+ * that is not `actor`'s; `409` while the bytes are still missing; `422` (and the record dropped)
95
+ * when what arrived is not the size that was declared. Idempotent on a ready record.
96
+ */
97
+ async completeUpload(input) {
98
+ const record = await this.ownRecord(input.mediaId, input.actor);
99
+ if (record === null)
100
+ return null;
101
+ const ready = await this.ensureReady(record);
102
+ if (ready === 'missing') {
103
+ throw new MediaUploadRefusedError(409, `upload ${input.mediaId} has not finished`);
104
+ }
105
+ if (ready === 'mismatch') {
106
+ await this.remove(record.id);
107
+ throw new MediaUploadRefusedError(422, `upload ${input.mediaId} does not match its declared size`);
108
+ }
109
+ return this.toAttachment(ready, { forModel: false });
110
+ }
111
+ /** The actor drops one of their own attachments — aborting its upload if still in flight. */
112
+ async discard(input) {
113
+ const record = await this.ownRecord(input.mediaId, input.actor);
114
+ if (record === null)
115
+ return false;
116
+ await this.remove(record.id);
117
+ return true;
45
118
  }
46
119
  get diskName() {
47
120
  return this.options.disk ?? this.deps.storage.defaultDisk;
@@ -49,54 +122,129 @@ export class MediaAttachmentStaging {
49
122
  async stage(input) {
50
123
  const id = this.newId();
51
124
  const fileName = safeFileName(input.filename);
52
- const path = `${this.ownerType}/${encodeURIComponent(input.actor.id)}/${this.collection}/${id}/${fileName}`;
125
+ const path = this.pathFor(input.actor, id, fileName);
53
126
  await this.deps.storage
54
127
  .disk(this.diskName)
55
128
  .put(path, input.data, { contentType: input.contentType });
56
- const timestamp = this.now();
57
- const record = await this.deps.store.save({
129
+ const record = await this.saveRecord({
58
130
  id,
59
- ownerType: this.ownerType,
60
- ownerId: input.actor.id,
61
- collection: this.collection,
62
- name: stripExtension(fileName),
131
+ actor: input.actor,
63
132
  fileName,
64
133
  mimeType: input.contentType,
65
134
  size: input.sizeBytes,
66
- disk: this.diskName,
67
135
  path,
68
- order: await this.deps.store.nextOrder(this.ownerType, input.actor.id, this.collection),
69
- customProperties: {},
70
- conversions: {},
71
- createdAt: timestamp,
72
- updatedAt: timestamp,
136
+ state: { status: 'ready' },
73
137
  });
74
138
  return this.toAttachment(record, { forModel: false });
75
139
  }
140
+ /**
141
+ * The attachment for `mediaId`, or `null` when it is unknown or this actor may not use it. The
142
+ * actor may use media they own, and media a message in one of THEIR threads already carries (a
143
+ * fork, a regenerate) — never anything else, unless `canAccess` says so.
144
+ */
76
145
  async resolve(input) {
77
146
  const record = await this.deps.store.find(input.mediaId);
78
147
  if (record === null || !this.isOurs(record))
79
148
  return null;
80
- const allowed = record.ownerId === input.actor.id;
81
- const custom = this.options.canAccess;
82
- const may = custom === undefined
83
- ? allowed
84
- : (await custom({ record, actor: input.actor, allowed })) === true;
85
- if (!may)
149
+ if (!(await this.canUse(record, input.actor)))
150
+ return null;
151
+ // A resumable upload whose bytes have not (fully) arrived is not attachable yet.
152
+ const ready = await this.ensureReady(record);
153
+ if (typeof ready === 'string')
86
154
  return null;
87
- return this.toAttachment(record, { forModel: true });
155
+ return this.toAttachment(ready, { forModel: true });
156
+ }
157
+ async canUse(record, actor) {
158
+ const allowed = await this.defaultAccess(record, actor);
159
+ const custom = this.options.canAccess;
160
+ return custom === undefined ? allowed : (await custom({ record, actor, allowed })) === true;
161
+ }
162
+ async defaultAccess(record, actor) {
163
+ if (record.ownerId === actor.id)
164
+ return true;
165
+ const referenced = this.deps.agentStore?.referencedMediaIds?.bind(this.deps.agentStore);
166
+ if (referenced === undefined)
167
+ return false;
168
+ return (await referenced(actor.id, [record.id])).includes(record.id);
88
169
  }
89
170
  /** Delete an upload and its row. */
90
171
  async remove(mediaId) {
91
172
  const record = await this.deps.store.find(mediaId);
92
173
  if (record === null || !this.isOurs(record))
93
174
  return;
175
+ const state = stateOf(record);
176
+ if (state.status === 'pending' && state.uploadId !== undefined) {
177
+ await this.deps.uploads?.abort(state.uploadId).catch(() => undefined);
178
+ }
94
179
  await this.deps.storage
95
180
  .disk(record.disk)
96
181
  .delete(record.path)
97
182
  .catch(() => undefined);
98
183
  await this.deps.store.delete(record.id);
99
184
  }
185
+ validate(filename, contentType, size) {
186
+ if (typeof filename !== 'string' || filename.trim().length === 0) {
187
+ throw new MediaUploadRefusedError(400, 'filename is required');
188
+ }
189
+ if (typeof contentType !== 'string' || !this.allowed.includes(contentType)) {
190
+ throw new MediaUploadRefusedError(415, `content type "${String(contentType)}" is not allowed (allowed: ${this.allowed.join(', ')})`);
191
+ }
192
+ if (typeof size !== 'number' || !Number.isInteger(size) || size <= 0) {
193
+ throw new MediaUploadRefusedError(400, 'size must be a positive integer byte count');
194
+ }
195
+ if (size > this.maxBytes) {
196
+ throw new MediaUploadRefusedError(413, `file exceeds the ${this.maxBytes}-byte limit`);
197
+ }
198
+ }
199
+ pathFor(actor, id, fileName) {
200
+ return `${this.ownerType}/${encodeURIComponent(actor.id)}/${this.collection}/${id}/${fileName}`;
201
+ }
202
+ async saveRecord(input) {
203
+ const timestamp = this.now();
204
+ return this.deps.store.save({
205
+ id: input.id,
206
+ ownerType: this.ownerType,
207
+ ownerId: input.actor.id,
208
+ collection: this.collection,
209
+ name: stripExtension(input.fileName),
210
+ fileName: input.fileName,
211
+ mimeType: input.mimeType,
212
+ size: input.size,
213
+ disk: this.diskName,
214
+ path: input.path,
215
+ order: await this.deps.store.nextOrder(this.ownerType, input.actor.id, this.collection),
216
+ // A multipart upload is ready the moment it is stored, and carries no state — the same row
217
+ // shape as before resumable uploads existed.
218
+ customProperties: input.state.status === 'ready' ? {} : { agentAttachment: input.state },
219
+ conversions: {},
220
+ createdAt: timestamp,
221
+ updatedAt: timestamp,
222
+ });
223
+ }
224
+ async ownRecord(mediaId, actor) {
225
+ const record = await this.deps.store.find(mediaId);
226
+ if (record === null || !this.isOurs(record) || record.ownerId !== actor.id)
227
+ return null;
228
+ return record;
229
+ }
230
+ /**
231
+ * A ready record as-is; a pending one promoted to ready once its bytes are on the disk at exactly
232
+ * the declared size. `'missing'` while they are not; `'mismatch'` when they arrived at another size.
233
+ */
234
+ async ensureReady(record) {
235
+ if (stateOf(record).status === 'ready')
236
+ return record;
237
+ const disk = this.deps.storage.disk(record.disk);
238
+ if (disk.exists === undefined || disk.getMetaData === undefined)
239
+ return 'missing';
240
+ if (!(await disk.exists(record.path)))
241
+ return 'missing';
242
+ const { contentLength } = await disk.getMetaData(record.path);
243
+ if (contentLength !== record.size || contentLength > this.maxBytes)
244
+ return 'mismatch';
245
+ const { agentAttachment: _done, ...customProperties } = record.customProperties;
246
+ return this.deps.store.save({ ...record, customProperties, updatedAt: this.now() });
247
+ }
100
248
  isOurs(record) {
101
249
  return record.ownerType === this.ownerType && record.collection === this.collection;
102
250
  }
@@ -132,6 +280,10 @@ export class MediaAttachmentStaging {
132
280
  };
133
281
  }
134
282
  }
283
+ function stateOf(record) {
284
+ const state = record.customProperties.agentAttachment;
285
+ return state ?? { status: 'ready' };
286
+ }
135
287
  function safeFileName(filename) {
136
288
  const last = filename.split(/[\\/]/).pop() ?? '';
137
289
  // biome-ignore lint/suspicious/noControlCharactersInRegex: stripping control chars is the point.