@icebreakers/monorepo-templates 1.0.7 → 1.0.9

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.
@@ -51,33 +51,33 @@
51
51
  },
52
52
  "devDependencies": {
53
53
  "@changesets/cli": "^2.31.0",
54
- "@commitlint/cli": "^21.0.0",
54
+ "@commitlint/cli": "^21.0.1",
55
55
  "@icebreakers/changelog-github": "^1.0.2",
56
56
  "@icebreakers/monorepo": "workspace:*",
57
- "@types/node": "^25.6.2",
57
+ "@types/node": "^25.9.1",
58
58
  "@types/semver": "^7.7.1",
59
- "@vitest/coverage-v8": "~4.1.6",
59
+ "@vitest/coverage-v8": "~4.1.7",
60
60
  "ci-info": "^4.4.0",
61
61
  "cross-env": "^10.1.0",
62
62
  "defu": "^6.1.7",
63
- "es-toolkit": "^1.46.1",
64
- "eslint": "^10.3.0",
63
+ "es-toolkit": "^1.47.0",
64
+ "eslint": "^10.4.0",
65
65
  "husky": "^9.1.7",
66
- "lint-staged": "^17.0.4",
66
+ "lint-staged": "^17.0.5",
67
67
  "only-allow": "^1.2.2",
68
68
  "pathe": "^2.0.3",
69
69
  "pkg-types": "^2.3.1",
70
70
  "repoctl": "workspace:*",
71
- "stylelint": "^17.11.0",
71
+ "stylelint": "^17.12.0",
72
72
  "tailwindcss": "^4.3.0",
73
73
  "tsd": "^0.33.0",
74
74
  "tsdown": "0.22.0",
75
75
  "tslib": "^2.8.1",
76
- "tsx": "^4.21.0",
77
- "turbo": "^2.9.12",
76
+ "tsx": "^4.22.3",
77
+ "turbo": "^2.9.15",
78
78
  "type-fest": "^5.6.0",
79
79
  "typescript": "^6.0.3",
80
- "vitest": "~4.1.6",
80
+ "vitest": "~4.1.7",
81
81
  "yaml": "^2.9.0"
82
82
  },
83
83
  "publishConfig": {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@icebreakers/monorepo-templates",
3
3
  "type": "module",
4
- "version": "1.0.7",
4
+ "version": "1.0.9",
5
5
  "description": "Template assets for icebreaker monorepo scaffolding",
6
6
  "author": "ice breaker <hi@sonofmagic.top>",
7
7
  "license": "MIT",
@@ -43,9 +43,9 @@
43
43
  "node": ">=18.0.0"
44
44
  },
45
45
  "dependencies": {
46
- "@inquirer/checkbox": "^5.1.5",
47
- "@inquirer/input": "^5.0.13",
48
- "@inquirer/select": "^5.1.5",
46
+ "@inquirer/checkbox": "^5.2.0",
47
+ "@inquirer/input": "^5.1.0",
48
+ "@inquirer/select": "^5.2.0",
49
49
  "commander": "^14.0.3",
50
50
  "nanoexec": "^1.1.0"
51
51
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@icebreakers/client",
3
3
  "type": "module",
4
- "version": "0.0.0",
4
+ "version": "0.0.1",
5
5
  "private": true,
6
6
  "scripts": {
7
7
  "dev": "vite --host",
@@ -16,37 +16,37 @@
16
16
  },
17
17
  "dependencies": {
18
18
  "@faker-js/faker": "^10.4.0",
19
- "@tanstack/vue-query": "^5.100.10",
20
- "@tanstack/vue-query-devtools": "^6.1.29",
19
+ "@tanstack/vue-query": "^5.100.14",
20
+ "@tanstack/vue-query-devtools": "^6.1.33",
21
21
  "@tanstack/vue-table": "^8.21.3",
22
- "@tanstack/vue-virtual": "^3.13.24",
22
+ "@tanstack/vue-virtual": "^3.13.26",
23
23
  "@trpc/client": "^11.17.0",
24
24
  "clsx": "^2.1.1",
25
25
  "pinia": "^3.0.4",
26
26
  "tailwind-merge": "^3.6.0",
27
27
  "tailwind-variants": "^3.2.2",
28
- "vue": "^3.5.34",
29
- "vue-i18n": "^11.4.2",
30
- "vue-router": "^5.0.6"
28
+ "vue": "^3.5.35",
29
+ "vue-i18n": "^11.4.4",
30
+ "vue-router": "^5.0.7"
31
31
  },
32
32
  "devDependencies": {
33
- "@cloudflare/vite-plugin": "^1.36.3",
34
- "@hono/node-server": "^2.0.2",
33
+ "@cloudflare/vite-plugin": "^1.39.0",
34
+ "@hono/node-server": "^2.0.4",
35
35
  "@hono/trpc-server": "^0.4.2",
36
36
  "@tailwindcss/vite": "^4.3.0",
37
37
  "@trpc/server": "^11.17.0",
38
- "@vitejs/plugin-vue": "^6.0.6",
38
+ "@vitejs/plugin-vue": "^6.0.7",
39
39
  "@vitejs/plugin-vue-jsx": "^5.1.5",
40
40
  "@vue/tsconfig": "^0.9.1",
41
41
  "consola": "^3.4.2",
42
- "hono": "^4.12.18",
42
+ "hono": "^4.12.23",
43
43
  "tailwindcss": "^4.3.0",
44
44
  "typescript": "~6.0.3",
45
- "vite": "^8.0.12",
45
+ "vite": "^8.0.14",
46
46
  "vite-plugin-vue-devtools": "^8.1.2",
47
47
  "vite-tsconfig-paths": "^6.1.1",
48
- "vue-tsc": "3.2.8",
49
- "wrangler": "^4.90.0",
48
+ "vue-tsc": "3.3.2",
49
+ "wrangler": "^4.95.0",
50
50
  "zod": "^4.4.3"
51
51
  }
52
52
  }
@@ -1,14 +1,15 @@
1
1
  /* eslint-disable */
2
- // Generated by Wrangler by running `wrangler types` (hash: fa12f52f057b37f671438ff56acffa6e)
3
- // Runtime types generated with workerd@1.20260507.1 2025-10-16 nodejs_compat
2
+ // Generated by Wrangler by running `wrangler types` (hash: bf05258867cf7490d4c96f4ea30bd0ef)
3
+ // Runtime types generated with workerd@1.20260526.1 2025-10-16 nodejs_compat
4
+ interface __BaseEnv_Env {
5
+ }
4
6
  declare namespace Cloudflare {
5
7
  interface GlobalProps {
6
8
  mainModule: typeof import("./worker/fetch-entry");
7
9
  }
8
- interface Env {
9
- }
10
+ interface Env extends __BaseEnv_Env {}
10
11
  }
11
- interface Env extends Cloudflare.Env {}
12
+ interface Env extends __BaseEnv_Env {}
12
13
 
13
14
  // Begin runtime types
14
15
  /*! *****************************************************************************
@@ -4825,9 +4826,6 @@ type ChatCompletionChoice = {
4825
4826
  finish_reason: "stop" | "length" | "tool_calls" | "content_filter" | "function_call";
4826
4827
  logprobs: ChatCompletionLogprobs | null;
4827
4828
  };
4828
- type ChatCompletionsPromptInput = {
4829
- prompt: string;
4830
- } & ChatCompletionsCommonOptions;
4831
4829
  type ChatCompletionsMessagesInput = {
4832
4830
  messages: Array<ChatCompletionMessageParam>;
4833
4831
  } & ChatCompletionsCommonOptions;
@@ -8757,11 +8755,11 @@ declare abstract class Base_Ai_Cf_Pipecat_Ai_Smart_Turn_V2 {
8757
8755
  postProcessedOutputs: Ai_Cf_Pipecat_Ai_Smart_Turn_V2_Output;
8758
8756
  }
8759
8757
  declare abstract class Base_Ai_Cf_Openai_Gpt_Oss_120B {
8760
- inputs: XOR<ResponsesInput, ChatCompletionsInput>;
8758
+ inputs: XOR<ResponsesInput, ChatCompletionsMessagesInput>;
8761
8759
  postProcessedOutputs: XOR<ResponsesOutput, ChatCompletionsOutput>;
8762
8760
  }
8763
8761
  declare abstract class Base_Ai_Cf_Openai_Gpt_Oss_20B {
8764
- inputs: XOR<ResponsesInput, ChatCompletionsInput>;
8762
+ inputs: XOR<ResponsesInput, ChatCompletionsMessagesInput>;
8765
8763
  postProcessedOutputs: XOR<ResponsesOutput, ChatCompletionsOutput>;
8766
8764
  }
8767
8765
  interface Ai_Cf_Leonardo_Phoenix_1_0_Input {
@@ -9737,6 +9735,10 @@ declare abstract class Base_Ai_Cf_Moonshotai_Kimi_K2_5 {
9737
9735
  inputs: ChatCompletionsInput;
9738
9736
  postProcessedOutputs: ChatCompletionsOutput;
9739
9737
  }
9738
+ declare abstract class Base_Ai_Cf_Moonshotai_Kimi_K2_6 {
9739
+ inputs: ChatCompletionsInput;
9740
+ postProcessedOutputs: ChatCompletionsOutput;
9741
+ }
9740
9742
  declare abstract class Base_Ai_Cf_Nvidia_Nemotron_3_120B_A12B {
9741
9743
  inputs: ChatCompletionsInput;
9742
9744
  postProcessedOutputs: ChatCompletionsOutput;
@@ -9834,7 +9836,9 @@ interface AiModels {
9834
9836
  "@cf/black-forest-labs/flux-2-klein-9b": Base_Ai_Cf_Black_Forest_Labs_Flux_2_Klein_9B;
9835
9837
  "@cf/zai-org/glm-4.7-flash": Base_Ai_Cf_Zai_Org_Glm_4_7_Flash;
9836
9838
  "@cf/moonshotai/kimi-k2.5": Base_Ai_Cf_Moonshotai_Kimi_K2_5;
9839
+ "@cf/moonshotai/kimi-k2.6": Base_Ai_Cf_Moonshotai_Kimi_K2_6;
9837
9840
  "@cf/nvidia/nemotron-3-120b-a12b": Base_Ai_Cf_Nvidia_Nemotron_3_120B_A12B;
9841
+ "@cf/google/gemma-4-26b-a4b-it": Base_Ai_Cf_Google_Gemma_4_26B_A4B_IT;
9838
9842
  }
9839
9843
  type AiOptions = {
9840
9844
  /**
@@ -9887,10 +9891,8 @@ type AiModelsSearchObject = {
9887
9891
  value: string;
9888
9892
  }[];
9889
9893
  };
9890
- type ChatCompletionsBase = XOR<ChatCompletionsPromptInput, ChatCompletionsMessagesInput>;
9891
- type ChatCompletionsInput = XOR<ChatCompletionsBase, {
9892
- requests: ChatCompletionsBase[];
9893
- }>;
9894
+ type ChatCompletionsBase = ChatCompletionsMessagesInput;
9895
+ type ChatCompletionsInput = ChatCompletionsMessagesInput;
9894
9896
  interface InferenceUpstreamError extends Error {
9895
9897
  }
9896
9898
  interface AiInternalError extends Error {
@@ -9935,8 +9937,15 @@ declare abstract class Ai<AiModelList extends AiModelListType = AiModels> {
9935
9937
  }, options?: AiOptions): Promise<ReadableStream>;
9936
9938
  // Normal (default) - known model
9937
9939
  run<Name extends keyof AiModelList>(model: Name, inputs: AiModelList[Name]['inputs'], options?: AiOptions): Promise<AiModelList[Name]['postProcessedOutputs']>;
9938
- // Unknown model (gateway fallback)
9939
- run(model: string & {}, inputs: Record<string, unknown>, options?: AiOptions): Promise<Record<string, unknown>>;
9940
+ // Unknown model (fallback).
9941
+ //
9942
+ // The `Exclude<..., keyof AiModelList>` constraint forces TypeScript to
9943
+ // route any model name that is a literal key of `AiModelList` to one of
9944
+ // the known-model overloads above (so input/output mismatches surface as
9945
+ // type errors rather than silently falling back to `Record<string, unknown>`).
9946
+ // Names that aren't in `AiModelList` — e.g. third-party gateway models
9947
+ // like `"google/nano-banana"` — still hit this overload.
9948
+ run<Model extends string>(model: Model extends keyof AiModelList ? never : Model, inputs: Record<string, unknown>, options?: AiOptions): Promise<Record<string, unknown>>;
9940
9949
  models(params?: AiModelsSearchParams): Promise<AiModelsSearchObject[]>;
9941
9950
  toMarkdown(): ToMarkdownService;
9942
9951
  toMarkdown(files: MarkdownDocument[], options?: ConversionRequestOptions): Promise<ConversionResponse[]>;
@@ -10127,12 +10136,17 @@ interface ArtifactsTokenListResult {
10127
10136
  /** Total number of tokens for the repository. */
10128
10137
  total: number;
10129
10138
  }
10130
- /** Handle for a single repository. Returned by Artifacts.get(). */
10139
+ /**
10140
+ * Handle for a single repository. Returned by Artifacts.get().
10141
+ *
10142
+ * Methods may throw `ArtifactsError` with code `INTERNAL_ERROR` if an unexpected service error occurs.
10143
+ */
10131
10144
  interface ArtifactsRepo extends ArtifactsRepoInfo {
10132
10145
  /**
10133
10146
  * Create an access token for this repo.
10134
10147
  * @param scope Token scope: "write" (default) or "read".
10135
10148
  * @param ttl Time-to-live in seconds (default 86400, min 60, max 31536000).
10149
+ * @throws {ArtifactsError} with code `INVALID_TTL` if ttl is out of range.
10136
10150
  */
10137
10151
  createToken(scope?: 'write' | 'read', ttl?: number): Promise<ArtifactsCreateTokenResult>;
10138
10152
  /** List tokens for this repo (metadata only, no plaintext). */
@@ -10141,6 +10155,7 @@ interface ArtifactsRepo extends ArtifactsRepoInfo {
10141
10155
  * Revoke a token by plaintext or ID.
10142
10156
  * @param tokenOrId Plaintext token or token ID.
10143
10157
  * @returns true if revoked, false if not found.
10158
+ * @throws {ArtifactsError} with code `INVALID_INPUT` if tokenOrId is empty.
10144
10159
  */
10145
10160
  revokeToken(tokenOrId: string): Promise<boolean>;
10146
10161
  // ── Fork ──
@@ -10148,6 +10163,9 @@ interface ArtifactsRepo extends ArtifactsRepoInfo {
10148
10163
  * Fork this repo to a new repo.
10149
10164
  * @param name Target repository name.
10150
10165
  * @param opts Optional: description, readOnly flag, defaultBranchOnly (default true).
10166
+ * @throws {ArtifactsError} with code `INVALID_REPO_NAME` if name is invalid.
10167
+ * @throws {ArtifactsError} with code `ALREADY_EXISTS` if the target repo already exists.
10168
+ * @throws {ArtifactsError} with code `FORK_IN_PROGRESS` if a fork is already running.
10151
10169
  */
10152
10170
  fork(name: string, opts?: {
10153
10171
  description?: string;
@@ -10155,13 +10173,41 @@ interface ArtifactsRepo extends ArtifactsRepoInfo {
10155
10173
  defaultBranchOnly?: boolean;
10156
10174
  }): Promise<ArtifactsCreateRepoResult>;
10157
10175
  }
10158
- /** Artifacts binding — namespace-level operations. */
10176
+ // ── Error types ──────────────────────────────────────────────────────────────
10177
+ /**
10178
+ * Error codes returned by Artifacts binding operations.
10179
+ *
10180
+ * Each code maps to a numeric code available on `ArtifactsError.numericCode`.
10181
+ */
10182
+ type ArtifactsErrorCode = 'ALREADY_EXISTS' | 'NOT_FOUND' | 'IMPORT_IN_PROGRESS' | 'FORK_IN_PROGRESS' | 'INVALID_INPUT' | 'INVALID_REPO_NAME' | 'INVALID_TTL' | 'INVALID_URL' | 'REMOTE_AUTH_REQUIRED' | 'UPSTREAM_UNAVAILABLE' | 'MEMORY_LIMIT' | 'INTERNAL_ERROR';
10183
+ /**
10184
+ * Error thrown by Artifacts binding operations.
10185
+ *
10186
+ * Uses a string `.code` discriminator following the Cloudflare platform
10187
+ * convention (StreamError, ImagesError, etc.). The `.numericCode` matches
10188
+ * the REST API `errors[].code` values.
10189
+ */
10190
+ interface ArtifactsError extends Error {
10191
+ readonly name: 'ArtifactsError';
10192
+ /** String error code for programmatic matching. */
10193
+ readonly code: ArtifactsErrorCode;
10194
+ /** Numeric error code matching the REST API. */
10195
+ readonly numericCode: number;
10196
+ }
10197
+ // ── Binding ──────────────────────────────────────────────────────────────────
10198
+ /**
10199
+ * Artifacts binding — namespace-level operations.
10200
+ *
10201
+ * Methods may throw `ArtifactsError` with code `INTERNAL_ERROR` if an unexpected service error occurs.
10202
+ */
10159
10203
  interface Artifacts {
10160
10204
  /**
10161
10205
  * Create a new repository with an initial access token.
10162
10206
  * @param name Repository name (alphanumeric, dots, hyphens, underscores).
10163
10207
  * @param opts Optional: readOnly flag, description, default branch name.
10164
10208
  * @returns Repo metadata with initial token.
10209
+ * @throws {ArtifactsError} with code `INVALID_REPO_NAME` if name is invalid.
10210
+ * @throws {ArtifactsError} with code `ALREADY_EXISTS` if the repo already exists.
10165
10211
  */
10166
10212
  create(name: string, opts?: {
10167
10213
  readOnly?: boolean;
@@ -10172,12 +10218,23 @@ interface Artifacts {
10172
10218
  * Get a handle to an existing repository.
10173
10219
  * @param name Repository name.
10174
10220
  * @returns Repo handle.
10221
+ * @throws {ArtifactsError} with code `NOT_FOUND` if the repo does not exist.
10222
+ * @throws {ArtifactsError} with code `IMPORT_IN_PROGRESS` if the repo is still importing.
10223
+ * @throws {ArtifactsError} with code `FORK_IN_PROGRESS` if the repo is still forking.
10175
10224
  */
10176
10225
  get(name: string): Promise<ArtifactsRepo>;
10177
10226
  /**
10178
10227
  * Import a repository from an external git remote.
10179
10228
  * @param params Source URL and optional branch/depth, plus target name and options.
10180
10229
  * @returns Repo metadata with initial token.
10230
+ * @throws {ArtifactsError} with code `INVALID_REPO_NAME` if the target name is invalid.
10231
+ * @throws {ArtifactsError} with code `INVALID_INPUT` if the source URL is not valid HTTPS.
10232
+ * @throws {ArtifactsError} with code `INVALID_URL` if the source URL does not point to a git repository.
10233
+ * @throws {ArtifactsError} with code `REMOTE_AUTH_REQUIRED` if the remote requires authentication.
10234
+ * @throws {ArtifactsError} with code `NOT_FOUND` if the remote repository does not exist.
10235
+ * @throws {ArtifactsError} with code `UPSTREAM_UNAVAILABLE` if the remote cannot be reached.
10236
+ * @throws {ArtifactsError} with code `MEMORY_LIMIT` if the import exceeds service memory limits.
10237
+ * @throws {ArtifactsError} with code `ALREADY_EXISTS` if the target repo already exists.
10181
10238
  */
10182
10239
  import(params: {
10183
10240
  source: {
@@ -10205,6 +10262,7 @@ interface Artifacts {
10205
10262
  * Delete a repository and all associated tokens.
10206
10263
  * @param name Repository name.
10207
10264
  * @returns true if deleted, false if not found.
10265
+ * @throws {ArtifactsError} with code `INVALID_REPO_NAME` if name is invalid.
10208
10266
  */
10209
10267
  delete(name: string): Promise<boolean>;
10210
10268
  }
@@ -11304,11 +11362,11 @@ interface SendEmail {
11304
11362
  send(message: EmailMessage): Promise<EmailSendResult>;
11305
11363
  send(builder: {
11306
11364
  from: string | EmailAddress;
11307
- to: string | string[];
11365
+ to: string | EmailAddress | (string | EmailAddress)[];
11308
11366
  subject: string;
11309
11367
  replyTo?: string | EmailAddress;
11310
- cc?: string | string[];
11311
- bcc?: string | string[];
11368
+ cc?: string | EmailAddress | (string | EmailAddress)[];
11369
+ bcc?: string | EmailAddress | (string | EmailAddress)[];
11312
11370
  headers?: Record<string, string>;
11313
11371
  text?: string;
11314
11372
  html?: string;
@@ -12150,9 +12208,19 @@ declare namespace CloudflareWorkersModule {
12150
12208
  attempt: number;
12151
12209
  config: WorkflowStepConfig;
12152
12210
  };
12211
+ export type WorkflowRollbackContext<T = unknown> = {
12212
+ error: Error;
12213
+ output: T | undefined;
12214
+ stepName: string;
12215
+ };
12216
+ export type WorkflowRollbackHandler<T = unknown> = (ctx: WorkflowRollbackContext<T>) => Promise<void>;
12217
+ export type WorkflowStepRollbackOptions<T = unknown> = {
12218
+ rollback?: WorkflowRollbackHandler<T>;
12219
+ rollbackConfig?: WorkflowStepConfig;
12220
+ };
12153
12221
  export abstract class WorkflowStep {
12154
- do<T extends Rpc.Serializable<T>>(name: string, callback: (ctx: WorkflowStepContext) => Promise<T>): Promise<T>;
12155
- do<T extends Rpc.Serializable<T>>(name: string, config: WorkflowStepConfig, callback: (ctx: WorkflowStepContext) => Promise<T>): Promise<T>;
12222
+ do<T extends Rpc.Serializable<T>>(name: string, callback: (ctx: WorkflowStepContext) => Promise<T>, rollbackOptions?: WorkflowStepRollbackOptions<T>): Promise<T>;
12223
+ do<T extends Rpc.Serializable<T>>(name: string, config: WorkflowStepConfig, callback: (ctx: WorkflowStepContext) => Promise<T>, rollbackOptions?: WorkflowStepRollbackOptions<T>): Promise<T>;
12156
12224
  sleep: (name: string, duration: WorkflowSleepDuration) => Promise<void>;
12157
12225
  sleepUntil: (name: string, timestamp: Date | number) => Promise<void>;
12158
12226
  waitForEvent<T extends Rpc.Serializable<T>>(name: string, options: {
@@ -13142,6 +13210,9 @@ declare namespace TailStream {
13142
13210
  // 1. This is an Onset event
13143
13211
  // 2. We are not inheriting any SpanContext. (e.g. this is a cross-account service binding or a new top-level invocation)
13144
13212
  readonly spanId?: string;
13213
+ // W3C trace flags from an upstream traceparent. Absent when no upstream
13214
+ // sampling decision was made.
13215
+ readonly traceFlags?: number;
13145
13216
  }
13146
13217
  interface TailEvent<Event extends EventType> {
13147
13218
  // invocation id of the currently invoked worker stage.
@@ -13415,6 +13486,103 @@ type WorkerVersionMetadata = {
13415
13486
  /** The timestamp of when the Worker Version was uploaded */
13416
13487
  timestamp: string;
13417
13488
  };
13489
+ // ============ Web Search Request Types ============
13490
+ /**
13491
+ * Options for a Web Search query.
13492
+ */
13493
+ type WebSearchSearchOptions = {
13494
+ /** The search query. */
13495
+ query: string;
13496
+ /**
13497
+ * Maximum number of results to return. Defaults to 10, capped at 20.
13498
+ * The actual count may be lower if fewer matches exist.
13499
+ */
13500
+ limit?: number;
13501
+ };
13502
+ // ============ Web Search Response Types ============
13503
+ /**
13504
+ * A single Web Search result.
13505
+ *
13506
+ * Web Search is discovery-only -- results carry catalog metadata about a page
13507
+ * but never the page body. To read a result's content the caller invokes the
13508
+ * global `fetch()` API against the result's `url`, at which point the
13509
+ * destination's own access controls apply (including Cloudflare Pay-per-Crawl).
13510
+ */
13511
+ type WebSearchResult = {
13512
+ /** Canonical URL. */
13513
+ url: string;
13514
+ /** Page title. */
13515
+ title: string;
13516
+ /** Page-level description. May be absent. */
13517
+ description?: string;
13518
+ /**
13519
+ * Last-modified date for the page, when known. Naive (no timezone)
13520
+ * ISO-8601 datetime, e.g. `"2025-11-30T04:39:48"`.
13521
+ */
13522
+ lastModifiedDate?: string;
13523
+ /**
13524
+ * Page meta image URL (typically the `og:image`). May be absent.
13525
+ */
13526
+ imageUrl?: string;
13527
+ /** Optional favicon URL for UI hints. */
13528
+ faviconUrl?: string;
13529
+ };
13530
+ /**
13531
+ * Per-response metadata for a Web Search query. Carries operational
13532
+ * fields useful for support and debugging.
13533
+ */
13534
+ type WebSearchResponseMetadata = {
13535
+ /** The query that was executed. */
13536
+ query: string;
13537
+ /** Opaque request identifier used for support and debugging. */
13538
+ requestId: string;
13539
+ /** End-to-end latency for this search request, in milliseconds. */
13540
+ latencyMs: number;
13541
+ };
13542
+ /**
13543
+ * Response from a Web Search query.
13544
+ */
13545
+ type WebSearchSearchResponse = {
13546
+ items: WebSearchResult[];
13547
+ metadata: WebSearchResponseMetadata;
13548
+ };
13549
+ // ============ Web Search Binding Class ============
13550
+ /**
13551
+ * Cloudflare Web Search binding.
13552
+ *
13553
+ * Discovery-only primitive for agents and Workers. Returns URLs and catalog
13554
+ * metadata for a query; never returns page content or excerpts. To read a
13555
+ * result's body, fetch the URL with the global `fetch()` API.
13556
+ *
13557
+ * Declared in wrangler with a single object (there is exactly one corpus, the
13558
+ * public web, so there is no name, namespace, or instance to specify):
13559
+ *
13560
+ * ```jsonc
13561
+ * { "web_search": { "binding": "WEBSEARCH" } }
13562
+ * ```
13563
+ *
13564
+ * @example
13565
+ * ```ts
13566
+ * const { items, metadata } = await env.WEBSEARCH.search({
13567
+ * query: "Cloudflare Workers",
13568
+ * });
13569
+ *
13570
+ * const top = items[0];
13571
+ * console.log(top.url, top.title, metadata.latencyMs);
13572
+ *
13573
+ * // Read content yourself; pay-per-crawl and other publisher
13574
+ * // controls apply at the fetch site, not at search time.
13575
+ * const page = await fetch(top.url);
13576
+ * ```
13577
+ */
13578
+ declare abstract class WebSearch {
13579
+ /**
13580
+ * Run a Web Search query.
13581
+ * @param options Search options. Only `query` is required.
13582
+ * @returns The matching results plus per-response metadata.
13583
+ */
13584
+ search(options: WebSearchSearchOptions): Promise<WebSearchSearchResponse>;
13585
+ }
13418
13586
  interface DynamicDispatchLimits {
13419
13587
  /**
13420
13588
  * Limit CPU time in milliseconds.
@@ -13516,6 +13684,27 @@ interface WorkflowError {
13516
13684
  code?: number;
13517
13685
  message: string;
13518
13686
  }
13687
+ interface WorkflowInstanceRestartOptions {
13688
+ /**
13689
+ * Restart from a specific step. If omitted, the instance restarts from the beginning.
13690
+ * The step must exist in the instance's execution history.
13691
+ */
13692
+ from?: {
13693
+ /**
13694
+ * The step name as defined in your workflow code.
13695
+ */
13696
+ name: string;
13697
+ /**
13698
+ * 1-indexed occurrence of this step name. Use when the same step name appears multiple times (e.g. in a loop).
13699
+ * @default 1
13700
+ */
13701
+ count?: number;
13702
+ /**
13703
+ * Step type filter. Use when different step types share the same name.
13704
+ */
13705
+ type?: 'do' | 'sleep' | 'waitForEvent';
13706
+ };
13707
+ }
13519
13708
  declare abstract class WorkflowInstance {
13520
13709
  public id: string;
13521
13710
  /**
@@ -13531,9 +13720,11 @@ declare abstract class WorkflowInstance {
13531
13720
  */
13532
13721
  public terminate(): Promise<void>;
13533
13722
  /**
13534
- * Restart the instance.
13723
+ * Restart the instance. Optionally restart from a specific step, preserving
13724
+ * cached results for all steps before it.
13725
+ * @param options Options for the restart, including an optional step to restart from.
13535
13726
  */
13536
- public restart(): Promise<void>;
13727
+ public restart(options?: WorkflowInstanceRestartOptions): Promise<void>;
13537
13728
  /**
13538
13729
  * Returns the current status of the instance.
13539
13730
  */
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@icebreakers/server",
3
3
  "type": "module",
4
- "version": "0.0.0",
4
+ "version": "0.0.1",
5
5
  "description": "tsdown build package template",
6
6
  "author": "ice breaker <hi@sonofmagic.top>",
7
7
  "license": "MIT",
@@ -54,11 +54,11 @@
54
54
  "types": "./dist/index.d.ts"
55
55
  },
56
56
  "devDependencies": {
57
- "@hono/node-server": "^2.0.2",
57
+ "@hono/node-server": "^2.0.4",
58
58
  "consola": "^3.4.2",
59
- "hono": "^4.12.18",
59
+ "hono": "^4.12.23",
60
60
  "tsdown": "0.22.0",
61
- "wrangler": "^4.90.0",
61
+ "wrangler": "^4.95.0",
62
62
  "zod": "^4.4.3"
63
63
  }
64
64
  }
@@ -1,14 +1,15 @@
1
1
  /* eslint-disable */
2
- // Generated by Wrangler by running `wrangler types` (hash: fd577b1f4edd34e8f40cee5b4eab2eb5)
3
- // Runtime types generated with workerd@1.20260507.1 2025-10-16 nodejs_compat
2
+ // Generated by Wrangler by running `wrangler types` (hash: 047568eb9ed6843cb5540fa33180da01)
3
+ // Runtime types generated with workerd@1.20260526.1 2025-10-16 nodejs_compat
4
+ interface __BaseEnv_Env {
5
+ }
4
6
  declare namespace Cloudflare {
5
7
  interface GlobalProps {
6
8
  mainModule: typeof import("./src/fetch-entry");
7
9
  }
8
- interface Env {
9
- }
10
+ interface Env extends __BaseEnv_Env {}
10
11
  }
11
- interface Env extends Cloudflare.Env {}
12
+ interface Env extends __BaseEnv_Env {}
12
13
 
13
14
  // Begin runtime types
14
15
  /*! *****************************************************************************
@@ -4825,9 +4826,6 @@ type ChatCompletionChoice = {
4825
4826
  finish_reason: "stop" | "length" | "tool_calls" | "content_filter" | "function_call";
4826
4827
  logprobs: ChatCompletionLogprobs | null;
4827
4828
  };
4828
- type ChatCompletionsPromptInput = {
4829
- prompt: string;
4830
- } & ChatCompletionsCommonOptions;
4831
4829
  type ChatCompletionsMessagesInput = {
4832
4830
  messages: Array<ChatCompletionMessageParam>;
4833
4831
  } & ChatCompletionsCommonOptions;
@@ -8757,11 +8755,11 @@ declare abstract class Base_Ai_Cf_Pipecat_Ai_Smart_Turn_V2 {
8757
8755
  postProcessedOutputs: Ai_Cf_Pipecat_Ai_Smart_Turn_V2_Output;
8758
8756
  }
8759
8757
  declare abstract class Base_Ai_Cf_Openai_Gpt_Oss_120B {
8760
- inputs: XOR<ResponsesInput, ChatCompletionsInput>;
8758
+ inputs: XOR<ResponsesInput, ChatCompletionsMessagesInput>;
8761
8759
  postProcessedOutputs: XOR<ResponsesOutput, ChatCompletionsOutput>;
8762
8760
  }
8763
8761
  declare abstract class Base_Ai_Cf_Openai_Gpt_Oss_20B {
8764
- inputs: XOR<ResponsesInput, ChatCompletionsInput>;
8762
+ inputs: XOR<ResponsesInput, ChatCompletionsMessagesInput>;
8765
8763
  postProcessedOutputs: XOR<ResponsesOutput, ChatCompletionsOutput>;
8766
8764
  }
8767
8765
  interface Ai_Cf_Leonardo_Phoenix_1_0_Input {
@@ -9737,6 +9735,10 @@ declare abstract class Base_Ai_Cf_Moonshotai_Kimi_K2_5 {
9737
9735
  inputs: ChatCompletionsInput;
9738
9736
  postProcessedOutputs: ChatCompletionsOutput;
9739
9737
  }
9738
+ declare abstract class Base_Ai_Cf_Moonshotai_Kimi_K2_6 {
9739
+ inputs: ChatCompletionsInput;
9740
+ postProcessedOutputs: ChatCompletionsOutput;
9741
+ }
9740
9742
  declare abstract class Base_Ai_Cf_Nvidia_Nemotron_3_120B_A12B {
9741
9743
  inputs: ChatCompletionsInput;
9742
9744
  postProcessedOutputs: ChatCompletionsOutput;
@@ -9834,7 +9836,9 @@ interface AiModels {
9834
9836
  "@cf/black-forest-labs/flux-2-klein-9b": Base_Ai_Cf_Black_Forest_Labs_Flux_2_Klein_9B;
9835
9837
  "@cf/zai-org/glm-4.7-flash": Base_Ai_Cf_Zai_Org_Glm_4_7_Flash;
9836
9838
  "@cf/moonshotai/kimi-k2.5": Base_Ai_Cf_Moonshotai_Kimi_K2_5;
9839
+ "@cf/moonshotai/kimi-k2.6": Base_Ai_Cf_Moonshotai_Kimi_K2_6;
9837
9840
  "@cf/nvidia/nemotron-3-120b-a12b": Base_Ai_Cf_Nvidia_Nemotron_3_120B_A12B;
9841
+ "@cf/google/gemma-4-26b-a4b-it": Base_Ai_Cf_Google_Gemma_4_26B_A4B_IT;
9838
9842
  }
9839
9843
  type AiOptions = {
9840
9844
  /**
@@ -9887,10 +9891,8 @@ type AiModelsSearchObject = {
9887
9891
  value: string;
9888
9892
  }[];
9889
9893
  };
9890
- type ChatCompletionsBase = XOR<ChatCompletionsPromptInput, ChatCompletionsMessagesInput>;
9891
- type ChatCompletionsInput = XOR<ChatCompletionsBase, {
9892
- requests: ChatCompletionsBase[];
9893
- }>;
9894
+ type ChatCompletionsBase = ChatCompletionsMessagesInput;
9895
+ type ChatCompletionsInput = ChatCompletionsMessagesInput;
9894
9896
  interface InferenceUpstreamError extends Error {
9895
9897
  }
9896
9898
  interface AiInternalError extends Error {
@@ -9935,8 +9937,15 @@ declare abstract class Ai<AiModelList extends AiModelListType = AiModels> {
9935
9937
  }, options?: AiOptions): Promise<ReadableStream>;
9936
9938
  // Normal (default) - known model
9937
9939
  run<Name extends keyof AiModelList>(model: Name, inputs: AiModelList[Name]['inputs'], options?: AiOptions): Promise<AiModelList[Name]['postProcessedOutputs']>;
9938
- // Unknown model (gateway fallback)
9939
- run(model: string & {}, inputs: Record<string, unknown>, options?: AiOptions): Promise<Record<string, unknown>>;
9940
+ // Unknown model (fallback).
9941
+ //
9942
+ // The `Exclude<..., keyof AiModelList>` constraint forces TypeScript to
9943
+ // route any model name that is a literal key of `AiModelList` to one of
9944
+ // the known-model overloads above (so input/output mismatches surface as
9945
+ // type errors rather than silently falling back to `Record<string, unknown>`).
9946
+ // Names that aren't in `AiModelList` — e.g. third-party gateway models
9947
+ // like `"google/nano-banana"` — still hit this overload.
9948
+ run<Model extends string>(model: Model extends keyof AiModelList ? never : Model, inputs: Record<string, unknown>, options?: AiOptions): Promise<Record<string, unknown>>;
9940
9949
  models(params?: AiModelsSearchParams): Promise<AiModelsSearchObject[]>;
9941
9950
  toMarkdown(): ToMarkdownService;
9942
9951
  toMarkdown(files: MarkdownDocument[], options?: ConversionRequestOptions): Promise<ConversionResponse[]>;
@@ -10127,12 +10136,17 @@ interface ArtifactsTokenListResult {
10127
10136
  /** Total number of tokens for the repository. */
10128
10137
  total: number;
10129
10138
  }
10130
- /** Handle for a single repository. Returned by Artifacts.get(). */
10139
+ /**
10140
+ * Handle for a single repository. Returned by Artifacts.get().
10141
+ *
10142
+ * Methods may throw `ArtifactsError` with code `INTERNAL_ERROR` if an unexpected service error occurs.
10143
+ */
10131
10144
  interface ArtifactsRepo extends ArtifactsRepoInfo {
10132
10145
  /**
10133
10146
  * Create an access token for this repo.
10134
10147
  * @param scope Token scope: "write" (default) or "read".
10135
10148
  * @param ttl Time-to-live in seconds (default 86400, min 60, max 31536000).
10149
+ * @throws {ArtifactsError} with code `INVALID_TTL` if ttl is out of range.
10136
10150
  */
10137
10151
  createToken(scope?: 'write' | 'read', ttl?: number): Promise<ArtifactsCreateTokenResult>;
10138
10152
  /** List tokens for this repo (metadata only, no plaintext). */
@@ -10141,6 +10155,7 @@ interface ArtifactsRepo extends ArtifactsRepoInfo {
10141
10155
  * Revoke a token by plaintext or ID.
10142
10156
  * @param tokenOrId Plaintext token or token ID.
10143
10157
  * @returns true if revoked, false if not found.
10158
+ * @throws {ArtifactsError} with code `INVALID_INPUT` if tokenOrId is empty.
10144
10159
  */
10145
10160
  revokeToken(tokenOrId: string): Promise<boolean>;
10146
10161
  // ── Fork ──
@@ -10148,6 +10163,9 @@ interface ArtifactsRepo extends ArtifactsRepoInfo {
10148
10163
  * Fork this repo to a new repo.
10149
10164
  * @param name Target repository name.
10150
10165
  * @param opts Optional: description, readOnly flag, defaultBranchOnly (default true).
10166
+ * @throws {ArtifactsError} with code `INVALID_REPO_NAME` if name is invalid.
10167
+ * @throws {ArtifactsError} with code `ALREADY_EXISTS` if the target repo already exists.
10168
+ * @throws {ArtifactsError} with code `FORK_IN_PROGRESS` if a fork is already running.
10151
10169
  */
10152
10170
  fork(name: string, opts?: {
10153
10171
  description?: string;
@@ -10155,13 +10173,41 @@ interface ArtifactsRepo extends ArtifactsRepoInfo {
10155
10173
  defaultBranchOnly?: boolean;
10156
10174
  }): Promise<ArtifactsCreateRepoResult>;
10157
10175
  }
10158
- /** Artifacts binding — namespace-level operations. */
10176
+ // ── Error types ──────────────────────────────────────────────────────────────
10177
+ /**
10178
+ * Error codes returned by Artifacts binding operations.
10179
+ *
10180
+ * Each code maps to a numeric code available on `ArtifactsError.numericCode`.
10181
+ */
10182
+ type ArtifactsErrorCode = 'ALREADY_EXISTS' | 'NOT_FOUND' | 'IMPORT_IN_PROGRESS' | 'FORK_IN_PROGRESS' | 'INVALID_INPUT' | 'INVALID_REPO_NAME' | 'INVALID_TTL' | 'INVALID_URL' | 'REMOTE_AUTH_REQUIRED' | 'UPSTREAM_UNAVAILABLE' | 'MEMORY_LIMIT' | 'INTERNAL_ERROR';
10183
+ /**
10184
+ * Error thrown by Artifacts binding operations.
10185
+ *
10186
+ * Uses a string `.code` discriminator following the Cloudflare platform
10187
+ * convention (StreamError, ImagesError, etc.). The `.numericCode` matches
10188
+ * the REST API `errors[].code` values.
10189
+ */
10190
+ interface ArtifactsError extends Error {
10191
+ readonly name: 'ArtifactsError';
10192
+ /** String error code for programmatic matching. */
10193
+ readonly code: ArtifactsErrorCode;
10194
+ /** Numeric error code matching the REST API. */
10195
+ readonly numericCode: number;
10196
+ }
10197
+ // ── Binding ──────────────────────────────────────────────────────────────────
10198
+ /**
10199
+ * Artifacts binding — namespace-level operations.
10200
+ *
10201
+ * Methods may throw `ArtifactsError` with code `INTERNAL_ERROR` if an unexpected service error occurs.
10202
+ */
10159
10203
  interface Artifacts {
10160
10204
  /**
10161
10205
  * Create a new repository with an initial access token.
10162
10206
  * @param name Repository name (alphanumeric, dots, hyphens, underscores).
10163
10207
  * @param opts Optional: readOnly flag, description, default branch name.
10164
10208
  * @returns Repo metadata with initial token.
10209
+ * @throws {ArtifactsError} with code `INVALID_REPO_NAME` if name is invalid.
10210
+ * @throws {ArtifactsError} with code `ALREADY_EXISTS` if the repo already exists.
10165
10211
  */
10166
10212
  create(name: string, opts?: {
10167
10213
  readOnly?: boolean;
@@ -10172,12 +10218,23 @@ interface Artifacts {
10172
10218
  * Get a handle to an existing repository.
10173
10219
  * @param name Repository name.
10174
10220
  * @returns Repo handle.
10221
+ * @throws {ArtifactsError} with code `NOT_FOUND` if the repo does not exist.
10222
+ * @throws {ArtifactsError} with code `IMPORT_IN_PROGRESS` if the repo is still importing.
10223
+ * @throws {ArtifactsError} with code `FORK_IN_PROGRESS` if the repo is still forking.
10175
10224
  */
10176
10225
  get(name: string): Promise<ArtifactsRepo>;
10177
10226
  /**
10178
10227
  * Import a repository from an external git remote.
10179
10228
  * @param params Source URL and optional branch/depth, plus target name and options.
10180
10229
  * @returns Repo metadata with initial token.
10230
+ * @throws {ArtifactsError} with code `INVALID_REPO_NAME` if the target name is invalid.
10231
+ * @throws {ArtifactsError} with code `INVALID_INPUT` if the source URL is not valid HTTPS.
10232
+ * @throws {ArtifactsError} with code `INVALID_URL` if the source URL does not point to a git repository.
10233
+ * @throws {ArtifactsError} with code `REMOTE_AUTH_REQUIRED` if the remote requires authentication.
10234
+ * @throws {ArtifactsError} with code `NOT_FOUND` if the remote repository does not exist.
10235
+ * @throws {ArtifactsError} with code `UPSTREAM_UNAVAILABLE` if the remote cannot be reached.
10236
+ * @throws {ArtifactsError} with code `MEMORY_LIMIT` if the import exceeds service memory limits.
10237
+ * @throws {ArtifactsError} with code `ALREADY_EXISTS` if the target repo already exists.
10181
10238
  */
10182
10239
  import(params: {
10183
10240
  source: {
@@ -10205,6 +10262,7 @@ interface Artifacts {
10205
10262
  * Delete a repository and all associated tokens.
10206
10263
  * @param name Repository name.
10207
10264
  * @returns true if deleted, false if not found.
10265
+ * @throws {ArtifactsError} with code `INVALID_REPO_NAME` if name is invalid.
10208
10266
  */
10209
10267
  delete(name: string): Promise<boolean>;
10210
10268
  }
@@ -11304,11 +11362,11 @@ interface SendEmail {
11304
11362
  send(message: EmailMessage): Promise<EmailSendResult>;
11305
11363
  send(builder: {
11306
11364
  from: string | EmailAddress;
11307
- to: string | string[];
11365
+ to: string | EmailAddress | (string | EmailAddress)[];
11308
11366
  subject: string;
11309
11367
  replyTo?: string | EmailAddress;
11310
- cc?: string | string[];
11311
- bcc?: string | string[];
11368
+ cc?: string | EmailAddress | (string | EmailAddress)[];
11369
+ bcc?: string | EmailAddress | (string | EmailAddress)[];
11312
11370
  headers?: Record<string, string>;
11313
11371
  text?: string;
11314
11372
  html?: string;
@@ -12150,9 +12208,19 @@ declare namespace CloudflareWorkersModule {
12150
12208
  attempt: number;
12151
12209
  config: WorkflowStepConfig;
12152
12210
  };
12211
+ export type WorkflowRollbackContext<T = unknown> = {
12212
+ error: Error;
12213
+ output: T | undefined;
12214
+ stepName: string;
12215
+ };
12216
+ export type WorkflowRollbackHandler<T = unknown> = (ctx: WorkflowRollbackContext<T>) => Promise<void>;
12217
+ export type WorkflowStepRollbackOptions<T = unknown> = {
12218
+ rollback?: WorkflowRollbackHandler<T>;
12219
+ rollbackConfig?: WorkflowStepConfig;
12220
+ };
12153
12221
  export abstract class WorkflowStep {
12154
- do<T extends Rpc.Serializable<T>>(name: string, callback: (ctx: WorkflowStepContext) => Promise<T>): Promise<T>;
12155
- do<T extends Rpc.Serializable<T>>(name: string, config: WorkflowStepConfig, callback: (ctx: WorkflowStepContext) => Promise<T>): Promise<T>;
12222
+ do<T extends Rpc.Serializable<T>>(name: string, callback: (ctx: WorkflowStepContext) => Promise<T>, rollbackOptions?: WorkflowStepRollbackOptions<T>): Promise<T>;
12223
+ do<T extends Rpc.Serializable<T>>(name: string, config: WorkflowStepConfig, callback: (ctx: WorkflowStepContext) => Promise<T>, rollbackOptions?: WorkflowStepRollbackOptions<T>): Promise<T>;
12156
12224
  sleep: (name: string, duration: WorkflowSleepDuration) => Promise<void>;
12157
12225
  sleepUntil: (name: string, timestamp: Date | number) => Promise<void>;
12158
12226
  waitForEvent<T extends Rpc.Serializable<T>>(name: string, options: {
@@ -13142,6 +13210,9 @@ declare namespace TailStream {
13142
13210
  // 1. This is an Onset event
13143
13211
  // 2. We are not inheriting any SpanContext. (e.g. this is a cross-account service binding or a new top-level invocation)
13144
13212
  readonly spanId?: string;
13213
+ // W3C trace flags from an upstream traceparent. Absent when no upstream
13214
+ // sampling decision was made.
13215
+ readonly traceFlags?: number;
13145
13216
  }
13146
13217
  interface TailEvent<Event extends EventType> {
13147
13218
  // invocation id of the currently invoked worker stage.
@@ -13415,6 +13486,103 @@ type WorkerVersionMetadata = {
13415
13486
  /** The timestamp of when the Worker Version was uploaded */
13416
13487
  timestamp: string;
13417
13488
  };
13489
+ // ============ Web Search Request Types ============
13490
+ /**
13491
+ * Options for a Web Search query.
13492
+ */
13493
+ type WebSearchSearchOptions = {
13494
+ /** The search query. */
13495
+ query: string;
13496
+ /**
13497
+ * Maximum number of results to return. Defaults to 10, capped at 20.
13498
+ * The actual count may be lower if fewer matches exist.
13499
+ */
13500
+ limit?: number;
13501
+ };
13502
+ // ============ Web Search Response Types ============
13503
+ /**
13504
+ * A single Web Search result.
13505
+ *
13506
+ * Web Search is discovery-only -- results carry catalog metadata about a page
13507
+ * but never the page body. To read a result's content the caller invokes the
13508
+ * global `fetch()` API against the result's `url`, at which point the
13509
+ * destination's own access controls apply (including Cloudflare Pay-per-Crawl).
13510
+ */
13511
+ type WebSearchResult = {
13512
+ /** Canonical URL. */
13513
+ url: string;
13514
+ /** Page title. */
13515
+ title: string;
13516
+ /** Page-level description. May be absent. */
13517
+ description?: string;
13518
+ /**
13519
+ * Last-modified date for the page, when known. Naive (no timezone)
13520
+ * ISO-8601 datetime, e.g. `"2025-11-30T04:39:48"`.
13521
+ */
13522
+ lastModifiedDate?: string;
13523
+ /**
13524
+ * Page meta image URL (typically the `og:image`). May be absent.
13525
+ */
13526
+ imageUrl?: string;
13527
+ /** Optional favicon URL for UI hints. */
13528
+ faviconUrl?: string;
13529
+ };
13530
+ /**
13531
+ * Per-response metadata for a Web Search query. Carries operational
13532
+ * fields useful for support and debugging.
13533
+ */
13534
+ type WebSearchResponseMetadata = {
13535
+ /** The query that was executed. */
13536
+ query: string;
13537
+ /** Opaque request identifier used for support and debugging. */
13538
+ requestId: string;
13539
+ /** End-to-end latency for this search request, in milliseconds. */
13540
+ latencyMs: number;
13541
+ };
13542
+ /**
13543
+ * Response from a Web Search query.
13544
+ */
13545
+ type WebSearchSearchResponse = {
13546
+ items: WebSearchResult[];
13547
+ metadata: WebSearchResponseMetadata;
13548
+ };
13549
+ // ============ Web Search Binding Class ============
13550
+ /**
13551
+ * Cloudflare Web Search binding.
13552
+ *
13553
+ * Discovery-only primitive for agents and Workers. Returns URLs and catalog
13554
+ * metadata for a query; never returns page content or excerpts. To read a
13555
+ * result's body, fetch the URL with the global `fetch()` API.
13556
+ *
13557
+ * Declared in wrangler with a single object (there is exactly one corpus, the
13558
+ * public web, so there is no name, namespace, or instance to specify):
13559
+ *
13560
+ * ```jsonc
13561
+ * { "web_search": { "binding": "WEBSEARCH" } }
13562
+ * ```
13563
+ *
13564
+ * @example
13565
+ * ```ts
13566
+ * const { items, metadata } = await env.WEBSEARCH.search({
13567
+ * query: "Cloudflare Workers",
13568
+ * });
13569
+ *
13570
+ * const top = items[0];
13571
+ * console.log(top.url, top.title, metadata.latencyMs);
13572
+ *
13573
+ * // Read content yourself; pay-per-crawl and other publisher
13574
+ * // controls apply at the fetch site, not at search time.
13575
+ * const page = await fetch(top.url);
13576
+ * ```
13577
+ */
13578
+ declare abstract class WebSearch {
13579
+ /**
13580
+ * Run a Web Search query.
13581
+ * @param options Search options. Only `query` is required.
13582
+ * @returns The matching results plus per-response metadata.
13583
+ */
13584
+ search(options: WebSearchSearchOptions): Promise<WebSearchSearchResponse>;
13585
+ }
13418
13586
  interface DynamicDispatchLimits {
13419
13587
  /**
13420
13588
  * Limit CPU time in milliseconds.
@@ -13516,6 +13684,27 @@ interface WorkflowError {
13516
13684
  code?: number;
13517
13685
  message: string;
13518
13686
  }
13687
+ interface WorkflowInstanceRestartOptions {
13688
+ /**
13689
+ * Restart from a specific step. If omitted, the instance restarts from the beginning.
13690
+ * The step must exist in the instance's execution history.
13691
+ */
13692
+ from?: {
13693
+ /**
13694
+ * The step name as defined in your workflow code.
13695
+ */
13696
+ name: string;
13697
+ /**
13698
+ * 1-indexed occurrence of this step name. Use when the same step name appears multiple times (e.g. in a loop).
13699
+ * @default 1
13700
+ */
13701
+ count?: number;
13702
+ /**
13703
+ * Step type filter. Use when different step types share the same name.
13704
+ */
13705
+ type?: 'do' | 'sleep' | 'waitForEvent';
13706
+ };
13707
+ }
13519
13708
  declare abstract class WorkflowInstance {
13520
13709
  public id: string;
13521
13710
  /**
@@ -13531,9 +13720,11 @@ declare abstract class WorkflowInstance {
13531
13720
  */
13532
13721
  public terminate(): Promise<void>;
13533
13722
  /**
13534
- * Restart the instance.
13723
+ * Restart the instance. Optionally restart from a specific step, preserving
13724
+ * cached results for all steps before it.
13725
+ * @param options Options for the restart, including an optional step to restart from.
13535
13726
  */
13536
- public restart(): Promise<void>;
13727
+ public restart(options?: WorkflowInstanceRestartOptions): Promise<void>;
13537
13728
  /**
13538
13729
  * Returns the current status of the instance.
13539
13730
  */
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@icebreakers/website",
3
3
  "type": "module",
4
- "version": "0.0.0",
4
+ "version": "0.0.1",
5
5
  "description": "https://repo.icebreaker.top source code",
6
6
  "author": "ice breaker <hi@sonofmagic.top>",
7
7
  "homepage": "https://repo.icebreaker.top",
@@ -23,19 +23,19 @@
23
23
  "typecheck": "tsc -p tsconfig.json"
24
24
  },
25
25
  "dependencies": {
26
- "vue": "^3.5.34"
26
+ "vue": "^3.5.35"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@braintree/sanitize-url": "^7.1.2",
30
30
  "@tailwindcss/vite": "^4.3.0",
31
- "cytoscape": "^3.33.3",
31
+ "cytoscape": "^3.33.4",
32
32
  "cytoscape-cose-bilkent": "^4.1.0",
33
- "dayjs": "^1.11.20",
33
+ "dayjs": "^1.11.21",
34
34
  "debug": "^4.4.3",
35
35
  "mermaid": "^11.15.0",
36
36
  "tailwindcss": "^4.3.0",
37
37
  "vitepress": "^1.6.4",
38
- "vitepress-plugin-llms": "^1.12.2",
38
+ "vitepress-plugin-llms": "^1.13.0",
39
39
  "vitepress-plugin-mermaid": "^2.0.17"
40
40
  }
41
41
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@icebreakers/vue-lib-template",
3
3
  "type": "module",
4
- "version": "0.0.1",
4
+ "version": "0.0.2",
5
5
  "description": "vue lib vite lib mode template",
6
6
  "author": "ice breaker <hi@sonofmagic.top>",
7
7
  "license": "ISC",
@@ -49,13 +49,13 @@
49
49
  "types": "./dist/index.d.ts"
50
50
  },
51
51
  "devDependencies": {
52
- "@vitejs/plugin-vue": "^6.0.6",
52
+ "@vitejs/plugin-vue": "^6.0.7",
53
53
  "@vue/test-utils": "^2.4.10",
54
54
  "@vue/tsconfig": "^0.9.1",
55
55
  "jsdom": "^29.1.1",
56
- "vite": "^8.0.12",
57
- "vite-plugin-dts": "^5.0.0",
58
- "vue": "^3.5.34",
59
- "vue-tsc": "^3.2.8"
56
+ "vite": "^8.0.14",
57
+ "vite-plugin-dts": "^5.0.1",
58
+ "vue": "^3.5.35",
59
+ "vue-tsc": "^3.3.2"
60
60
  }
61
61
  }