@beignet/core 0.0.34 → 0.0.36

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 (120) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +145 -15
  3. package/dist/agent-capabilities/index.d.ts +197 -0
  4. package/dist/agent-capabilities/index.d.ts.map +1 -0
  5. package/dist/agent-capabilities/index.js +282 -0
  6. package/dist/agent-capabilities/index.js.map +1 -0
  7. package/dist/application/index.d.ts +2 -2
  8. package/dist/application/index.d.ts.map +1 -1
  9. package/dist/application/index.js +13 -3
  10. package/dist/application/index.js.map +1 -1
  11. package/dist/client/client.d.ts +2 -0
  12. package/dist/client/client.d.ts.map +1 -1
  13. package/dist/client/client.js +33 -16
  14. package/dist/client/client.js.map +1 -1
  15. package/dist/contracts/contract-builder.d.ts +5 -3
  16. package/dist/contracts/contract-builder.d.ts.map +1 -1
  17. package/dist/contracts/contract-builder.js +3 -12
  18. package/dist/contracts/contract-builder.js.map +1 -1
  19. package/dist/contracts/contract-group.d.ts +2 -2
  20. package/dist/contracts/contract-group.d.ts.map +1 -1
  21. package/dist/contracts/contract-group.js +2 -1
  22. package/dist/contracts/contract-group.js.map +1 -1
  23. package/dist/contracts/metadata.d.ts +3 -0
  24. package/dist/contracts/metadata.d.ts.map +1 -0
  25. package/dist/contracts/metadata.js +14 -0
  26. package/dist/contracts/metadata.js.map +1 -0
  27. package/dist/contracts/types.d.ts +20 -0
  28. package/dist/contracts/types.d.ts.map +1 -1
  29. package/dist/contracts/types.js.map +1 -1
  30. package/dist/events/index.d.ts +4 -4
  31. package/dist/events/index.d.ts.map +1 -1
  32. package/dist/events/index.js +5 -5
  33. package/dist/events/index.js.map +1 -1
  34. package/dist/idempotency/index.d.ts.map +1 -1
  35. package/dist/idempotency/index.js +14 -9
  36. package/dist/idempotency/index.js.map +1 -1
  37. package/dist/jobs/index.d.ts.map +1 -1
  38. package/dist/jobs/index.js +10 -4
  39. package/dist/jobs/index.js.map +1 -1
  40. package/dist/openapi/index.js +15 -8
  41. package/dist/openapi/index.js.map +1 -1
  42. package/dist/ports/auth.d.ts +2 -0
  43. package/dist/ports/auth.d.ts.map +1 -1
  44. package/dist/ports/auth.js +2 -0
  45. package/dist/ports/auth.js.map +1 -1
  46. package/dist/providers/index.d.ts +1 -1
  47. package/dist/providers/index.d.ts.map +1 -1
  48. package/dist/providers/index.js.map +1 -1
  49. package/dist/providers/provider.d.ts +9 -1
  50. package/dist/providers/provider.d.ts.map +1 -1
  51. package/dist/providers/provider.js.map +1 -1
  52. package/dist/schedules/index.d.ts +6 -13
  53. package/dist/schedules/index.d.ts.map +1 -1
  54. package/dist/schedules/index.js +24 -44
  55. package/dist/schedules/index.js.map +1 -1
  56. package/dist/server/index.d.ts +2 -2
  57. package/dist/server/index.d.ts.map +1 -1
  58. package/dist/server/index.js +1 -1
  59. package/dist/server/index.js.map +1 -1
  60. package/dist/server/request-executor.d.ts +72 -0
  61. package/dist/server/request-executor.d.ts.map +1 -0
  62. package/dist/server/request-executor.js +781 -0
  63. package/dist/server/request-executor.js.map +1 -0
  64. package/dist/server/request-preparation.d.ts +39 -0
  65. package/dist/server/request-preparation.d.ts.map +1 -0
  66. package/dist/server/request-preparation.js +248 -0
  67. package/dist/server/request-preparation.js.map +1 -0
  68. package/dist/server/response-finalization.d.ts +34 -0
  69. package/dist/server/response-finalization.d.ts.map +1 -0
  70. package/dist/server/response-finalization.js +279 -0
  71. package/dist/server/response-finalization.js.map +1 -0
  72. package/dist/server/route-definitions.d.ts +139 -0
  73. package/dist/server/route-definitions.d.ts.map +1 -0
  74. package/dist/server/route-definitions.js +94 -0
  75. package/dist/server/route-definitions.js.map +1 -0
  76. package/dist/server/route-matching.d.ts +15 -0
  77. package/dist/server/route-matching.d.ts.map +1 -0
  78. package/dist/server/route-matching.js +46 -0
  79. package/dist/server/route-matching.js.map +1 -0
  80. package/dist/server/server.d.ts +6 -147
  81. package/dist/server/server.d.ts.map +1 -1
  82. package/dist/server/server.js +29 -1350
  83. package/dist/server/server.js.map +1 -1
  84. package/dist/server/use-case-route.d.ts +1 -1
  85. package/dist/tracing/index.d.ts +1 -1
  86. package/dist/tracing/index.d.ts.map +1 -1
  87. package/dist/tracing/index.js.map +1 -1
  88. package/dist/uploads/client.js +4 -7
  89. package/dist/uploads/client.js.map +1 -1
  90. package/dist/uploads/index.d.ts.map +1 -1
  91. package/dist/uploads/index.js +59 -12
  92. package/dist/uploads/index.js.map +1 -1
  93. package/package.json +5 -1
  94. package/skills/app-architecture/SKILL.md +27 -1
  95. package/src/agent-capabilities/index.ts +643 -0
  96. package/src/application/index.ts +19 -5
  97. package/src/client/client.ts +41 -17
  98. package/src/contracts/contract-builder.ts +8 -16
  99. package/src/contracts/contract-group.ts +4 -6
  100. package/src/contracts/metadata.ts +20 -0
  101. package/src/contracts/types.ts +39 -0
  102. package/src/events/index.ts +16 -20
  103. package/src/idempotency/index.ts +17 -9
  104. package/src/jobs/index.ts +8 -3
  105. package/src/openapi/index.ts +24 -12
  106. package/src/ports/auth.ts +2 -0
  107. package/src/providers/index.ts +1 -0
  108. package/src/providers/provider.ts +17 -2
  109. package/src/schedules/index.ts +57 -63
  110. package/src/server/index.ts +4 -2
  111. package/src/server/request-executor.ts +1170 -0
  112. package/src/server/request-preparation.ts +409 -0
  113. package/src/server/response-finalization.ts +385 -0
  114. package/src/server/route-definitions.ts +338 -0
  115. package/src/server/route-matching.ts +64 -0
  116. package/src/server/server.ts +63 -2139
  117. package/src/server/use-case-route.ts +1 -1
  118. package/src/tracing/index.ts +1 -0
  119. package/src/uploads/client.ts +4 -7
  120. package/src/uploads/index.ts +70 -12
@@ -1,4 +1,9 @@
1
1
  import type { StandardSchemaV1 } from "@standard-schema/spec";
2
+ import {
3
+ createProviderInstrumentation,
4
+ type ProviderInstrumentation,
5
+ type ProviderInstrumentationTarget,
6
+ } from "../providers/index.js";
2
7
  import { runWithResolvedTracingContext } from "../tracing/execution.js";
3
8
  import type { TracingPort } from "../tracing/index.js";
4
9
 
@@ -312,16 +317,6 @@ export interface ScheduleDevtoolsEvent {
312
317
  details?: Record<string, unknown>;
313
318
  }
314
319
 
315
- /**
316
- * Sink for schedule devtools events, usually `ctx.ports.devtools`.
317
- */
318
- export interface ScheduleInstrumentation {
319
- /**
320
- * Record one schedule devtools event.
321
- */
322
- record(event: ScheduleDevtoolsEvent): unknown;
323
- }
324
-
325
320
  /**
326
321
  * Correlation fields attached to schedule instrumentation events.
327
322
  */
@@ -381,13 +376,14 @@ export interface InlineScheduleRunnerOptions<Ctx> {
381
376
  */
382
377
  now?: () => Date;
383
378
  /**
384
- * Devtools-compatible sink that receives `schedule` events for each run.
379
+ * Provider instrumentation target that receives `schedule` events for each
380
+ * run. Pass `ctx.ports`, `ctx.ports.instrumentation`, or
381
+ * `ctx.ports.devtools` directly.
385
382
  *
386
383
  * The runner records `started`, `completed`, and `failed` events. Recording
387
- * failures are isolated from schedule execution and reported to
388
- * `onHookError` when provided.
384
+ * failures are isolated from schedule execution.
389
385
  */
390
- instrumentation?: ScheduleInstrumentation;
386
+ instrumentation?: ProviderInstrumentationTarget;
391
387
  /**
392
388
  * Correlation fields attached to recorded schedule events.
393
389
  */
@@ -675,45 +671,28 @@ async function recordScheduleEvent<
675
671
  Ctx,
676
672
  S extends ScheduleDef<string, StandardSchema, Ctx>,
677
673
  >(
678
- options: InlineScheduleRunnerOptions<Ctx>,
674
+ instrumentation: ProviderInstrumentation,
675
+ instrumentationContext: ScheduleInstrumentationContext | undefined,
679
676
  schedule: S,
680
677
  status: ScheduleDevtoolsEvent["status"],
681
678
  run: ScheduleRunContext,
682
- args: {
683
- payload?: InferSchedulePayload<S>;
684
- hook: ScheduleHookName;
685
- scheduleError?: unknown;
686
- details?: Record<string, unknown>;
687
- },
679
+ details?: Record<string, unknown>,
688
680
  ): Promise<void> {
689
- if (!options.instrumentation) return;
690
-
691
- try {
692
- options.instrumentation.record({
693
- type: "schedule",
694
- watcher: "schedules",
695
- requestId: options.instrumentationContext?.requestId,
696
- traceId: options.instrumentationContext?.traceId,
697
- scheduleName: schedule.name,
698
- status,
699
- cron: schedule.cron,
700
- timezone: schedule.timezone,
701
- details: {
702
- source: run.source,
703
- scheduledAt: run.scheduledAt?.toISOString(),
704
- ...args.details,
705
- },
706
- });
707
- } catch (error) {
708
- await reportHookError(options.onHookError, {
709
- schedule,
710
- payload: args.payload,
711
- run,
712
- hook: args.hook,
713
- error,
714
- scheduleError: args.scheduleError,
715
- });
716
- }
681
+ instrumentation.record({
682
+ type: "schedule",
683
+ watcher: "schedules",
684
+ requestId: instrumentationContext?.requestId,
685
+ traceId: instrumentationContext?.traceId,
686
+ scheduleName: schedule.name,
687
+ status,
688
+ cron: schedule.cron,
689
+ timezone: schedule.timezone,
690
+ details: {
691
+ source: run.source,
692
+ scheduledAt: run.scheduledAt?.toISOString(),
693
+ ...details,
694
+ },
695
+ });
717
696
  }
718
697
 
719
698
  function defineScheduleImpl<
@@ -785,6 +764,13 @@ export function createInlineScheduleRunner<Ctx>(
785
764
  options: InlineScheduleRunnerOptions<Ctx> = {},
786
765
  ): InlineScheduleRunner<Ctx> {
787
766
  const now = options.now ?? (() => new Date());
767
+ const instrumentation = createProviderInstrumentation(
768
+ options.instrumentation,
769
+ {
770
+ providerName: "schedules",
771
+ watcher: "schedules",
772
+ },
773
+ );
788
774
 
789
775
  return {
790
776
  async run<S extends ScheduleDef<string, StandardSchema, Ctx>>(
@@ -798,10 +784,13 @@ export function createInlineScheduleRunner<Ctx>(
798
784
  payload = await resolveSchedulePayload(schedule, runOptions, run);
799
785
 
800
786
  const lifecycleArgs = { schedule, payload, run };
801
- await recordScheduleEvent(options, schedule, "started", run, {
802
- payload,
803
- hook: "start",
804
- });
787
+ await recordScheduleEvent(
788
+ instrumentation,
789
+ options.instrumentationContext,
790
+ schedule,
791
+ "started",
792
+ run,
793
+ );
805
794
  await runLifecycleHook(
806
795
  "start",
807
796
  options.onStart,
@@ -820,10 +809,13 @@ export function createInlineScheduleRunner<Ctx>(
820
809
  run,
821
810
  }),
822
811
  });
823
- await recordScheduleEvent(options, schedule, "completed", run, {
824
- payload,
825
- hook: "success",
826
- });
812
+ await recordScheduleEvent(
813
+ instrumentation,
814
+ options.instrumentationContext,
815
+ schedule,
816
+ "completed",
817
+ run,
818
+ );
827
819
  await runLifecycleHook(
828
820
  "success",
829
821
  options.onSuccess,
@@ -831,12 +823,14 @@ export function createInlineScheduleRunner<Ctx>(
831
823
  lifecycleArgs,
832
824
  );
833
825
  } catch (error) {
834
- await recordScheduleEvent(options, schedule, "failed", run, {
835
- payload,
836
- hook: "error",
837
- scheduleError: error,
838
- details: { error },
839
- });
826
+ await recordScheduleEvent(
827
+ instrumentation,
828
+ options.instrumentationContext,
829
+ schedule,
830
+ "failed",
831
+ run,
832
+ { error },
833
+ );
840
834
  await runErrorHook(options.onError, options.onHookError, {
841
835
  error,
842
836
  schedule,
@@ -76,7 +76,10 @@ export type {
76
76
  RawRouteBuilder,
77
77
  RawRouteInit,
78
78
  RouteDef,
79
+ RouteDefinitionBuilder,
79
80
  RouteGroup,
81
+ RouteGroupBuilder,
82
+ Routes,
80
83
  ServerInstance,
81
84
  } from "./server.js";
82
85
  /**
@@ -84,9 +87,8 @@ export type {
84
87
  */
85
88
  export {
86
89
  contractsFromRoutes,
90
+ createRoutes,
87
91
  createServer,
88
- defineRoute,
89
- defineRouteGroup,
90
92
  defineRoutes,
91
93
  } from "./server.js";
92
94
  /**