@byteplus/ark-cli-darwin-x64 0.0.0-stage → 1.0.46-prerelease.dc921200a42d

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 (148) hide show
  1. package/LICENSE +201 -0
  2. package/bin/arkcli-darwin-amd64 +4 -0
  3. package/manifest.json +43 -0
  4. package/package.json +20 -4
  5. package/skills/arkcli-agent/SKILL.md +152 -0
  6. package/skills/arkcli-agent/references/agent.md +398 -0
  7. package/skills/arkcli-agent/references/byok.md +65 -0
  8. package/skills/arkcli-agent/references/context-management.md +42 -0
  9. package/skills/arkcli-agent/references/debug-export.md +26 -0
  10. package/skills/arkcli-agent/references/evals.md +178 -0
  11. package/skills/arkcli-agent/references/events-chat.md +148 -0
  12. package/skills/arkcli-agent/references/interfaces-gaps.md +52 -0
  13. package/skills/arkcli-agent/references/mcp-vault.md +111 -0
  14. package/skills/arkcli-agent/references/model-config.md +46 -0
  15. package/skills/arkcli-agent/references/self-hosted.md +47 -0
  16. package/skills/arkcli-agent/references/session-files.md +149 -0
  17. package/skills/arkcli-agent/references/session-upgrade.md +61 -0
  18. package/skills/arkcli-agent/references/skills.md +87 -0
  19. package/skills/arkcli-agent/references/todo-write.md +31 -0
  20. package/skills/arkcli-api-explorer/SKILL.md +188 -0
  21. package/skills/arkcli-api-explorer/references/arkcli-api.md +180 -0
  22. package/skills/arkcli-api-explorer/references/evals.md +176 -0
  23. package/skills/arkcli-auth/SKILL.md +184 -0
  24. package/skills/arkcli-auth/references/arkcli-auth-login.md +92 -0
  25. package/skills/arkcli-auth/references/arkcli-auth-status.md +109 -0
  26. package/skills/arkcli-auth/references/arkcli-auth-whoami.md +56 -0
  27. package/skills/arkcli-auth/references/auth-modes.md +78 -0
  28. package/skills/arkcli-auth/references/evals.md +82 -0
  29. package/skills/arkcli-auth/references/identity-resolution.md +33 -0
  30. package/skills/arkcli-auth/references/realname-gate.md +69 -0
  31. package/skills/arkcli-billing/SKILL.md +122 -0
  32. package/skills/arkcli-billing/references/arkcli-billing-list.md +259 -0
  33. package/skills/arkcli-billing/references/evals.md +107 -0
  34. package/skills/arkcli-chat/SKILL.md +114 -0
  35. package/skills/arkcli-chat/references/arkcli-chat.md +283 -0
  36. package/skills/arkcli-chat/references/caching-thinking.md +124 -0
  37. package/skills/arkcli-chat/references/chat-meta.md +77 -0
  38. package/skills/arkcli-chat/references/evals.md +34 -0
  39. package/skills/arkcli-chat/references/stream-events.md +124 -0
  40. package/skills/arkcli-chat/references/text-format.md +167 -0
  41. package/skills/arkcli-chat/references/tools.md +119 -0
  42. package/skills/arkcli-config/SKILL.md +197 -0
  43. package/skills/arkcli-config/references/arkcli-config-init.md +89 -0
  44. package/skills/arkcli-config/references/arkcli-config-profile.md +106 -0
  45. package/skills/arkcli-config/references/evals.md +154 -0
  46. package/skills/arkcli-connect/SKILL.md +196 -0
  47. package/skills/arkcli-connect/references/arkcli-connect.md +165 -0
  48. package/skills/arkcli-connect/references/evals.md +231 -0
  49. package/skills/arkcli-custommodel/SKILL.md +167 -0
  50. package/skills/arkcli-custommodel/references/arkcli-custommodel-available-quantizations.md +29 -0
  51. package/skills/arkcli-custommodel/references/arkcli-custommodel-delete.md +37 -0
  52. package/skills/arkcli-custommodel/references/arkcli-custommodel-get.md +45 -0
  53. package/skills/arkcli-custommodel/references/arkcli-custommodel-list.md +65 -0
  54. package/skills/arkcli-custommodel/references/arkcli-custommodel-quantize.md +59 -0
  55. package/skills/arkcli-custommodel/references/arkcli-custommodel-update.md +47 -0
  56. package/skills/arkcli-custommodel/references/arkcli-custommodel-upload.md +64 -0
  57. package/skills/arkcli-custommodel/references/evals.md +59 -0
  58. package/skills/arkcli-datasets/SKILL.md +39 -0
  59. package/skills/arkcli-datasets/references/commands.md +83 -0
  60. package/skills/arkcli-datasets/references/evals.md +31 -0
  61. package/skills/arkcli-deploy/SKILL.md +89 -0
  62. package/skills/arkcli-deploy/references/arkcli-deploy.md +141 -0
  63. package/skills/arkcli-deploy/references/evals.md +80 -0
  64. package/skills/arkcli-docs/SKILL.md +453 -0
  65. package/skills/arkcli-docs/references/commands.md +283 -0
  66. package/skills/arkcli-docs/references/evals.md +201 -0
  67. package/skills/arkcli-docs/references/failure-modes.md +85 -0
  68. package/skills/arkcli-doctor/CONTRIBUTING.md +54 -0
  69. package/skills/arkcli-doctor/SKILL.md +367 -0
  70. package/skills/arkcli-doctor/references/error-codes.md +162 -0
  71. package/skills/arkcli-doctor/references/evals.md +385 -0
  72. package/skills/arkcli-doctor/references/scope-account.md +94 -0
  73. package/skills/arkcli-doctor/references/scope-cli.md +88 -0
  74. package/skills/arkcli-doctor/references/scope-infer-endpoint.md +132 -0
  75. package/skills/arkcli-doctor/references/scope-metrics.md +157 -0
  76. package/skills/arkcli-doctor/references/scope-model.md +130 -0
  77. package/skills/arkcli-doctor/references/verify-origin.md +102 -0
  78. package/skills/arkcli-gen/SKILL.md +188 -0
  79. package/skills/arkcli-gen/references/arkcli-gen.md +230 -0
  80. package/skills/arkcli-gen/references/gen-meta.md +154 -0
  81. package/skills/arkcli-gen/references/image-stream.md +105 -0
  82. package/skills/arkcli-helper/SKILL.md +200 -0
  83. package/skills/arkcli-helper/references/arkcli-helper.md +298 -0
  84. package/skills/arkcli-helper/references/evals.md +334 -0
  85. package/skills/arkcli-iam/SKILL.md +46 -0
  86. package/skills/arkcli-iam/references/arkcli-iam-userid.md +54 -0
  87. package/skills/arkcli-iam/references/evals.md +24 -0
  88. package/skills/arkcli-infer-endpoint/SKILL.md +82 -0
  89. package/skills/arkcli-infer-endpoint/references/arkcli-infer-endpoint-capability-get.md +50 -0
  90. package/skills/arkcli-infer-endpoint/references/arkcli-infer-endpoint-create.md +121 -0
  91. package/skills/arkcli-infer-endpoint/references/arkcli-infer-endpoint-delete.md +71 -0
  92. package/skills/arkcli-infer-endpoint/references/arkcli-infer-endpoint-get.md +43 -0
  93. package/skills/arkcli-infer-endpoint/references/arkcli-infer-endpoint-list.md +82 -0
  94. package/skills/arkcli-infer-endpoint/references/arkcli-infer-endpoint-start.md +36 -0
  95. package/skills/arkcli-infer-endpoint/references/arkcli-infer-endpoint-stop.md +36 -0
  96. package/skills/arkcli-infer-endpoint/references/arkcli-infer-endpoint-update.md +78 -0
  97. package/skills/arkcli-infer-endpoint/references/evals.md +24 -0
  98. package/skills/arkcli-models/SKILL.md +305 -0
  99. package/skills/arkcli-models/references/arkcli-models-activate.md +103 -0
  100. package/skills/arkcli-models/references/arkcli-models-get.md +94 -0
  101. package/skills/arkcli-models/references/arkcli-models-list.md +71 -0
  102. package/skills/arkcli-models/references/arkcli-models-scenario-table.md +75 -0
  103. package/skills/arkcli-models/references/arkcli-models-search.md +170 -0
  104. package/skills/arkcli-models/references/evals.md +57 -0
  105. package/skills/arkcli-onboard/SKILL.md +169 -0
  106. package/skills/arkcli-onboard/references/evals.md +156 -0
  107. package/skills/arkcli-plans/SKILL.md +135 -0
  108. package/skills/arkcli-plans/references/arkcli-plans-buy.md +125 -0
  109. package/skills/arkcli-plans/references/arkcli-plans-get.md +84 -0
  110. package/skills/arkcli-plans/references/arkcli-plans-model-apply.md +58 -0
  111. package/skills/arkcli-plans/references/arkcli-plans-model-list.md +114 -0
  112. package/skills/arkcli-plans/references/arkcli-plans-renew.md +125 -0
  113. package/skills/arkcli-plans/references/arkcli-plans-team-rotate-apikey.md +61 -0
  114. package/skills/arkcli-plans/references/arkcli-plans-team-seat-assign.md +147 -0
  115. package/skills/arkcli-plans/references/arkcli-plans-team-seat-list.md +100 -0
  116. package/skills/arkcli-plans/references/evals.md +178 -0
  117. package/skills/arkcli-pricing/SKILL.md +120 -0
  118. package/skills/arkcli-pricing/references/arkcli-pricing-models.md +258 -0
  119. package/skills/arkcli-pricing/references/arkcli-pricing-plans.md +139 -0
  120. package/skills/arkcli-profile/SKILL.md +168 -0
  121. package/skills/arkcli-profile/references/arkcli-profile-create.md +92 -0
  122. package/skills/arkcli-profile/references/arkcli-profile-keys.md +135 -0
  123. package/skills/arkcli-profile/references/arkcli-profile-set-default.md +81 -0
  124. package/skills/arkcli-profile/references/evals.md +93 -0
  125. package/skills/arkcli-resources/SKILL.md +112 -0
  126. package/skills/arkcli-resources/references/arkcli-resources-list.md +105 -0
  127. package/skills/arkcli-shared/SKILL.md +209 -0
  128. package/skills/arkcli-shared/references/global-flags.md +77 -0
  129. package/skills/arkcli-shared/references/profile-defaults.md +35 -0
  130. package/skills/arkcli-shared/references/troubleshooting.md +49 -0
  131. package/skills/arkcli-shared/references/update.md +117 -0
  132. package/skills/arkcli-train-finetune/SKILL.md +109 -0
  133. package/skills/arkcli-train-finetune/references/create.md +274 -0
  134. package/skills/arkcli-train-finetune/references/download.md +50 -0
  135. package/skills/arkcli-train-finetune/references/evals.md +59 -0
  136. package/skills/arkcli-train-finetune/references/export-deploy.md +179 -0
  137. package/skills/arkcli-train-finetune/references/list.md +79 -0
  138. package/skills/arkcli-train-finetune/references/manage.md +140 -0
  139. package/skills/arkcli-understand/SKILL.md +105 -0
  140. package/skills/arkcli-understand/references/arkcli-understand.md +249 -0
  141. package/skills/arkcli-understand/references/evals.md +109 -0
  142. package/skills/arkcli-understand/references/sub-skills.md +137 -0
  143. package/skills/arkcli-usage/SKILL.md +123 -0
  144. package/skills/arkcli-usage/references/arkcli-usage-balance.md +196 -0
  145. package/skills/arkcli-usage/references/arkcli-usage-plan.md +153 -0
  146. package/skills/arkcli-usage/references/arkcli-usage-seats.md +199 -0
  147. package/skills/arkcli-usage/references/arkcli-usage-stats.md +160 -0
  148. package/README.md +0 -3
@@ -0,0 +1,283 @@
1
+ # +chat
2
+
3
+ > **Prerequisite:** Read [`../arkcli-shared/SKILL.md`](../../arkcli-shared/SKILL.md) first to learn about authentication, global parameters, and security rules.
4
+
5
+ A high-level wrapper for the data-plane Responses API (`POST /responses`). A single command returns the assistant response and supports multimodal input, reasoning, streaming, and multi-turn conversations.
6
+
7
+ ## Commands
8
+
9
+ ### Common option mistakes
10
+
11
+ Use `--model ep-...` (not `--endpoint`), `--thinking disabled` (not
12
+ `--thinking type=disabled`), `--instructions` (not `--system`),
13
+ `--max-output-tokens` (not `--max-tokens`), and `--reasoning-effort`
14
+ (not `--reasoning` or `--effort`). On an unknown flag/subcommand, check the
15
+ current leaf help rather than retrying guessed spellings. Image/video generation
16
+ belongs to gen, not a chat/text Endpoint.
17
+
18
+ `+chat` does not expose `--parallel-tool-calls`. Use only registered tool options from leaf help; `--max-tool-calls` is not a serialization switch. Missing CLI control neither guarantees serial execution nor proves a universal concurrent default. If the user needs explicit `parallel_tool_calls`, verify the target Responses API/SDK contract and explain the current CLI boundary instead of inventing a flag.
19
+
20
+ ### Long output and performance delivery
21
+
22
+ - Choose an output limit within the user's budget and the target model's supported range.
23
+ Do not blindly maximize it or repeatedly regenerate to assemble an answer.
24
+ - A length-related `status=incomplete` is truncated output, not a complete delivery.
25
+ Preserve the partial content and real response ID. Continue only when requested, using
26
+ the stored ID and the same identity/key, model, and calling context; align with the
27
+ previous ending to avoid duplicated or missing passages.
28
+ - Assemble only `.content`, never `reasoning_content`. If the earlier response was
29
+ not stored, expired, or is inaccessible, disclose that continuity cannot be confirmed.
30
+ - For requested latency measurements, hold model version, prompt, and output limit fixed
31
+ and vary one setting at a time. Measure TTFT from the first final-answer text delta in
32
+ `--stream --include-events`, not the first reasoning event, head/tail truncation, or
33
+ total runtime. See [stream-events.md](stream-events.md); label small samples as
34
+ same-environment observations, not production SLAs.
35
+ - Preserve stdout and stderr separately; never parse mixed `2>&1` output as JSON.
36
+ If a capture environment merges streams, `--no-progress` suppresses heartbeats,
37
+ but errors still need to be retained.
38
+
39
+ > **⚠️ `--model` must be in the complete `<name>-<primary_version>` form, such as `dola-seed-2-1-turbo-260628` or `seed-2-0-lite-260428`, or an endpoint ID (`ep-xxx`). Passing only the family name, such as `dola-seed-2-1-turbo` or `glm-5-2`, will return 404 `InvalidEndpointOrModel.NotFound`.**
40
+ >
41
+ > The `primary_version` format is not fixed. It is commonly a 6-digit value such as `260628`, but it can also be a 6-digit value such as `260428`, a prefixed value such as `preview-260328`, a short number such as `2507`, or even an empty string (in that case, the full ID is the family name itself). About half of models are not 6-digit versions. For details, see link 0 in [`../../arkcli-models/SKILL.md`](../../arkcli-models/SKILL.md).**Do not use your own regular expression to decide "whether it looks like a complete ID".**
42
+ >
43
+ > **Complete before calling (required):** If you are not sure whether `--model` is already in complete form, run this first:
44
+ >
45
+ > ```bash
46
+ > VER=$(arkcli models get <name> --transform 'primary_version' | tr -d '"')
47
+ > # The --transform output includes JSON double quotes, so you must strip them with tr -d. Otherwise, $VER will be "260628", causing an incorrect concatenation.
48
+ > MODEL=${VER:+<name>-$VER}; MODEL=${MODEL:-<name>} # Falls back to <name> when VER is an empty string.
49
+ > arkcli +chat --model "$MODEL" "<prompt>"
50
+ > ```
51
+ >
52
+ > If you have just run `models search/list`, you can directly reuse the returned `primary_version` parameter without calling `get` again.
53
+
54
+ **Plan delivery before making the request:** When the user asks to save a result,
55
+ capture the complete non-streaming JSON stdout in a new local file. Extract
56
+ `.content`, `.id`, and `.usage` from that same successful response. Saving,
57
+ format checks, and content verification are local operations, not reasons to
58
+ repeat a successful `+chat` call. The examples below are alternatives for
59
+ different tasks, not successive requests to retrieve different fields.
60
+ See [text-format.md](text-format.md#save-the-structured-body) for a capture/save
61
+ example. Explicitly requested continuation or regeneration still uses new
62
+ requests; preserve each turn separately and use the real preceding response ID.
63
+
64
+ ```bash
65
+ # Plain-text chat
66
+ arkcli +chat --model dola-seed-2-1-turbo-260628 "Introduce yourself in three sentences"
67
+
68
+ # Streaming output (think first, then response).
69
+ arkcli +chat --model dola-seed-2-1-turbo-260628 --stream "Explain quantum entanglement"
70
+
71
+ # System-level instructions + sampling adjustment
72
+ arkcli +chat --model dola-seed-2-1-turbo-260628 \
73
+ --instructions "You are an assistant that answers in only one sentence" \
74
+ --temperature 0.2 --top-p 0.9 --max-output-tokens 128 \
75
+ "Why is the sky blue?"
76
+
77
+ # Increase reasoning effort (only effective on models that support reasoning)
78
+ arkcli +chat --model dola-seed-2-1-turbo-260628 --reasoning-effort high \
79
+ "Prove: there are infinitely many prime numbers"
80
+
81
+ # Multimodal input (local image)
82
+ arkcli +chat --model dola-seed-2-1-turbo-260628 --input @photo.jpg "Describe this image"
83
+
84
+ # Multimodal input (audio)
85
+ arkcli +chat --model dola-seed-2-1-turbo-260628 --input @clip.mp3 "What is this audio saying?"
86
+
87
+ # Multiple files (comparison and combined understanding)
88
+ arkcli +chat --model dola-seed-2-1-turbo-260628 --input @img1.jpg --input @img2.jpg "Compare these two images"
89
+
90
+ # Use an Endpoint ID (endpoint) instead of the model name
91
+ arkcli +chat --model ep-20260416234150-zsd4v "hello"
92
+
93
+ # Multi-turn continuation — you must use --store to persist the first turn first.
94
+ RESP_ID=$(arkcli +chat --model dola-seed-2-1-turbo-260628 --store --format json "First-turn question" \
95
+ | jq -r .id)
96
+ arkcli +chat --model dola-seed-2-1-turbo-260628 --previous-response-id "$RESP_ID" "Second-turn question"
97
+
98
+ # Full JSON output
99
+ arkcli +chat --model dola-seed-2-1-turbo-260628 --format json "hello"
100
+ ```
101
+
102
+ ## Client preview
103
+
104
+ Use the command-local `+chat --dry-run` to inspect `preview.v1` without network
105
+ requests, credential refresh, file writes, inference charges or response storage.
106
+ It does not establish that a Key, model, quota or parameter combination is usable
107
+ online. Keep online admission inside the chosen BytePlus profile and Region.
108
+
109
+ Inspect `summary.would_send` for sampling values, token limits, `store`, tool-call
110
+ limits, `caching`, `thinking`, `expire_at`, `reasoning`, and valid JSON
111
+ `text.format`. Explicit `0` and `false` differ from omission. Legacy aliases
112
+ `prompt`, `inputs`, `text_format` and `reasoning_effort` remain available; this
113
+ object is not a directly sendable wire request.
114
+
115
+ Preview preserves its existing admission behavior: `validated: true` does not
116
+ prove that a local asset exists, a strict schema compiles, or non-finite sampling
117
+ values can be sent. Non-JSON-representable schema/sampling fields may be absent;
118
+ real execution retains its existing validation. See [evals.md](evals.md) for
119
+ regression scenarios, including exact large integers and nested URL redaction.
120
+
121
+ ## Parameter
122
+
123
+ | Parameter | Required | Type |Description|
124
+ |------|------|------|------|
125
+ | `<prompt>` |Yes| positional | Prompt (positional parameter, placed at the end of the command) |
126
+ | `--model` | No| string | **Complete versioned model ID** (such as `dola-seed-2-1-turbo-260628`) or inference endpoint ID (such as `ep-xxx`). Passing only the family name `dola-seed-2-1-turbo` is unstable, and newer model families will directly report `InvalidEndpointOrModel.NotFound`.**0.1.16+ can be omitted**: If omitted, it falls back to `Resources.Text.Default` in the active profile, resolved in the order `--profile > ARK_PROFILE > default`. If it is not set, a hint guides you to run `arkcli profile set-default --modality text <id>` |
127
+ | `--input` | No| string (repeatable) | File reference, such as `@photo.jpg`; routed to an image/video/audio/file ContentItem by extension. Passing it repeatedly means multiple files. |
128
+ | `--stream` | No| bool | Streaming output (two sections: `Thinking:` + `Response:`) |
129
+ | `--instructions` | No| string | System-level instructions injected into this Responses request. |
130
+ | `--temperature` | No| float | Sampling temperature, such as `0.7`. |
131
+ | `--top-p` | No| float | Nucleus sampling top_p, such as `0.9`. |
132
+ | `--max-output-tokens` | No| int | Maximum number of tokens in the assistant response. |
133
+ | `--reasoning-effort` | No| string | Reasoning effort: `minimal` / `low` / `medium` / `high` (only effective on models that support reasoning). |
134
+ | `--store` | No| bool | Persist this response so that later `--previous-response-id` can continue from it. Without `--store`, only a very short window is retained. |
135
+ | `--previous-response-id` | No| string | Previous response ID, used for multi-turn conversation continuation. |
136
+
137
+ ## @file mechanism
138
+
139
+ Processing flow for `--input @<path>`:
140
+
141
+ 1. arkcli converts `@photo.jpg` to an **absolute path** `file:///Users/.../photo.jpg`.
142
+ 2. Infer the mime type by extension:
143
+ - `.jpg/.jpeg/.png/.webp/.gif/.bmp` → `input_image`
144
+ - `.mp4/.mov/.webm/.mkv/.avi` → `input_video`
145
+ - `.mp3/.wav/.m4a/.aac/.flac/.ogg` → `input_audio`
146
+ - Other extensions → `input_file`
147
+ 3. The underlying SDK automatically performs the "upload → get file_id → replace URL with file_id" flow, and then sends the request.
148
+ 4. This is transparent to the user.
149
+
150
+ Supported reference forms:
151
+ - `@<path>` — Local file. The path is resolved to an absolute path.
152
+ - `<path>` (without a prefix) — Equivalent to `@<path>`.
153
+ - `https://...`, `http://...` — Remote URL, passed directly to the model.
154
+ - `file://...`, `tos://...` — Preconstructed URL.
155
+
156
+ ## Return values
157
+
158
+ > **Important: The `+chat` output has been flattened by arkcli into scalar parameters. It is not the native Responses API nested structure `output[].content[].text`.** The assistant text is presented directly as the `content` string. The service layer concatenates all `output_text` fragments into a single section. Reasoning text likewise uses `reasoning_content`. The global `--format` only accepts `json` and **does not** switch back to the native nested shape. If you use `output[].content[].text`, `jq` will not get anything.
159
+
160
+ **Default output** (flat schema):
161
+
162
+ ```json
163
+ {
164
+ "id": "resp_021776932247884ea9dc72e4279a1799608cb64438f5f0f125439",
165
+ "model": "dola-seed-2-1-turbo-260628",
166
+ "content": "...",
167
+ "reasoning_content": "...",
168
+ "usage": {
169
+ "prompt_tokens": 88,
170
+ "completion_tokens": 419,
171
+ "total_tokens": 507
172
+ }
173
+ }
174
+ ```
175
+
176
+ - `id`: The response ID of this request, used for the next `--previous-response-id`.
177
+ - `content`: The assistant's final answer text (**already flattened into a string**, with all `output_text` fragments concatenated by the service).
178
+ - `reasoning_content`: The model's reasoning process text (non-empty only when the model supports reasoning).
179
+ - `usage`: Token usage.
180
+
181
+ **Streaming output** (`--stream`):
182
+
183
+ ```
184
+ Thinking:
185
+ <Incremental reasoning text...>
186
+
187
+ Response:
188
+ <Incremental final answer text...>
189
+ ```
190
+
191
+ In stream mode, JSON is not output. The result is printed directly, followed by a newline when it ends.
192
+
193
+ ### Parse with jq (common)
194
+
195
+ These are independent invocation examples. If a successful response was already
196
+ captured, read that file instead, for example `jq -r .content response.json`.
197
+ Do not make another model request just to retrieve a different field.
198
+
199
+ ```bash
200
+ # Get the assistant text body
201
+ arkcli +chat --model <id> "<prompt>" | jq -r .content
202
+
203
+ # Get reasoning text (non-empty only for reasoning models)
204
+ arkcli +chat --model <id> --reasoning-effort high "<prompt>" | jq -r .reasoning_content
205
+
206
+ # Get token usage
207
+ arkcli +chat --model <id> "<prompt>" | jq .usage
208
+
209
+ # Get the response ID (used with --store to chain multiple turns)
210
+ arkcli +chat --model <id> --store "<prompt>" | jq -r .id
211
+ ```
212
+
213
+ > Do not write `jq '.output[].content[].text'`. `+chat` has been flattened and does not have that path.
214
+
215
+ ### Get the native SDK shape (fallback)
216
+
217
+ If you must parse the native Responses API nested `output[]` structure, bypass `+chat` and use the raw API explorer:
218
+
219
+ ```bash
220
+ arkcli api arkruntime.create_responses --params '{
221
+ "model": "<id>",
222
+ "input": [
223
+ {"role": "user", "content": [{"type": "input_text", "text": "Hello"}]}
224
+ ]
225
+ }'
226
+ ```
227
+
228
+ The returned value is the arkcli-side `CreateResponsesResponse` (registered as a raw operation), which preserves parameters closer to the upstream SDK, such as `output[]`, `usage`, and `reasoning`. For details, see [`../../arkcli-api-explorer/SKILL.md`](../../arkcli-api-explorer/SKILL.md).
229
+
230
+ ## Common errors
231
+
232
+ | Error | Cause | Fix |
233
+ |------|------|---------|
234
+ | `prompt is required when no --input is provided` | A prompt is required for plain-text chat. | Add the prompt positional parameter. |
235
+ | `model is required` | `--model` is not provided. | Add a model name or endpoint ID. |
236
+ | `input file not found: <path>` | The file for `@<path>` does not exist or is a directory. | Check the path. When using a relative path, pay attention to the current working directory. |
237
+ | `ark runtime: API Key is required` | The API key is not configured.| Run `arkcli auth apikey` or set the `ARK_API_KEY` environment variable. |
238
+ | `Error code: 400 - ... invalid scheme` | The URL passed in is not recognized by the backend (for example, `file://` was not uploaded successfully by the SDK). | Check the file size and permissions. Add `--debug` to view the SDK upload flow. |
239
+ | `Error code: 400 - ... model not found` | The `--model` name or endpoint ID is incorrect. | Check with `arkcli models search` / `arkcli infer endpoint list`. |
240
+ | `Error code: 404 - InvalidEndpointOrModel.NotFound` | The value passed to `--model` is a model family name, such as `dola-seed-2-1-turbo` or `glm-5-2`, and no family-name alias is registered for that family. | Use `arkcli models get <name> --transform 'primary_version'` to get the version number, concatenate it into `<name>-<primary_version>`, and then pass it. |
241
+
242
+ ## Direct `arkcli api` call (raw)
243
+
244
+ The operations behind `+chat` are `arkruntime.create_responses` and `arkruntime.create_responses_stream`, which can be called directly:
245
+
246
+ ```bash
247
+ # Plain text (minimal shape)
248
+ arkcli api arkruntime.create_responses --params '{
249
+ "model":"dola-seed-2-1-turbo-260628",
250
+ "input":"hello"
251
+ }'
252
+
253
+ # Message shape with role (content can be either string or list)
254
+ arkcli api arkruntime.create_responses --params '{
255
+ "model":"dola-seed-2-1-turbo-260628",
256
+ "input":[{"role":"user","content":"hello"}]
257
+ }'
258
+
259
+ # Multimodal input (list-form content)
260
+ arkcli api arkruntime.create_responses --params '{
261
+ "model":"dola-seed-2-1-turbo-260628",
262
+ "input":[{
263
+ "role":"user",
264
+ "content":[
265
+ {"type":"input_image","image_url":"file:///abs/path.jpg"},
266
+ {"type":"input_text","text":"describe this"}
267
+ ]
268
+ }]
269
+ }'
270
+ ```
271
+
272
+ Note: During raw API calls, **a local file `file://` URL depends on the SDK's automatic upload**, and the original path cannot be a relative path.
273
+
274
+ ## Relationship with other commands
275
+
276
+ - **[`arkcli +gen`](../../arkcli-gen/SKILL.md)**: Used for image/video **generation**, not chat.
277
+ - **[`arkcli models`](../../arkcli-models/SKILL.md)**: Used to look up model names and modalities. Use it first when you cannot find a suitable model.
278
+
279
+ ## Security and privacy
280
+
281
+ - `--input @<file>` uploads the file **in full** to the ARK file service (handled automatically by the SDK).
282
+ - Do not upload sensitive files casually. Uploaded files are retained on the server for a period of time. Do not assume they "disappear right after upload".
283
+ - When using `--debug`, network request content is printed to stderr. Redact the API key before sending logs externally.
@@ -0,0 +1,124 @@
1
+ ---
2
+ name: caching-thinking
3
+ description: arkcli +chat Caching / Thinking / ExpireAt usage reference, used with --store + chat get to implement verifiable multi-turn caching and thinking toggles.
4
+ ---
5
+
6
+ # +chat Caching / Thinking / ExpireAt
7
+
8
+ These three flags let `+chat` actually control server-side caching, reasoning depth, and the persistence lifecycle, while echoing the state in the response so agents can verify it.
9
+
10
+ ## When to use
11
+
12
+ - **Caching**: Use when the same system / tool definitions are repeated in a multi-turn conversation and you want to use the prompt cache to save cost; or when you want to disable caching to test clean behavior.
13
+ - **Thinking**: Use when the model supports reasoning but you do not want it to think in this turn (to save tokens), or when you want to force it to think.
14
+ - **ExpireAt**: Use when you want to add an expiration time to a response stored with `--store`, so it is not stored indefinitely.
15
+
16
+ ## Flag quick reference
17
+
18
+ | flag | Type | Value / form |
19
+ |---|---|---|
20
+ | `--caching` | string | `enabled` / `disabled` (empty means use the server default) |
21
+ | `--cache-prefix` | bool | Used with `--caching`; enables prefix-cache (used by autotest's `prefix_cache_test`).**Mutually exclusive with `--max-output-tokens`** —— The server constraint is `caching.prefix is not supported when max_output_tokens is set`, and arkcli intercepts this combination on the client side. |
22
+ | `--thinking` | string | `auto` / `enabled` / `disabled` (empty means use the server default) |
23
+ | `--expire-at` | int (epoch sec) | Use with `--store`; if not passed, the server default GC policy is used. |
24
+
25
+ ## Typical combinations
26
+
27
+ ### Multi-turn conversation with caching enabled
28
+
29
+ ```bash
30
+ # First turn: enable caching + store
31
+ RID=$(arkcli +chat "What color are strawberries?" --model ep-xxx \
32
+ --caching enabled --store \
33
+ --format json | jq -r .id)
34
+
35
+ # Second turn: enable caching as well, continue from RID
36
+ arkcli +chat "What about apples?" --model ep-xxx \
37
+ --caching enabled --store \
38
+ --previous-response-id "$RID"
39
+
40
+ # Check cache configuration, not a cache hit: retrieve the response with chat get.
41
+ arkcli chat get "$RID" --format json | jq .caching
42
+ # → {"type":"enabled"}
43
+ ```
44
+
45
+ ### Disable thinking to shorten output
46
+
47
+ ```bash
48
+ arkcli +chat "Introduce LLM in 30 characters" --model ep-xxx \
49
+ --thinking disabled --max-output-tokens 100
50
+ # The response is returned directly without thinking phase.
51
+ ```
52
+
53
+ ### Persistence + expiration
54
+
55
+ ```bash
56
+ TS=$(($(date +%s) + 3600)) # Expires in 1 hour
57
+ arkcli +chat "Remember that my name is Jim" --model ep-xxx \
58
+ --store --expire-at "$TS"
59
+
60
+ # Verify
61
+ arkcli chat get "$RID" --format json | jq '{store, expire_at}'
62
+ # → {"store":true, "expire_at":1746676800}
63
+ ```
64
+
65
+ ## Output format
66
+
67
+ In non-streaming mode, both `+chat` and `chat get` return an extended `ResponsesResult`:
68
+
69
+ ```json
70
+ {
71
+ "id": "resp_...",
72
+ "object": "response",
73
+ "status": "completed",
74
+ "created_at": 1746673200,
75
+ "model": "...",
76
+ "content": "...",
77
+ "reasoning_content": "...",
78
+ "usage": { ... },
79
+ "store": true,
80
+ "expire_at": 1746676800,
81
+ "previous_response_id": "...",
82
+ "caching": {"type": "enabled", "prefix": null},
83
+ "thinking": {"type": "disabled"},
84
+ "reasoning": {"effort": "medium"}
85
+ }
86
+ ```
87
+
88
+ For machine-readable streaming evidence, use `--stream --include-events` and inspect the
89
+ successful terminal event's actual response fields. Plain `--stream` is human-readable,
90
+ not the flat JSON above. Missing echoes remain unknown; do not add another inference call
91
+ just to obtain them. See [stream-events.md](stream-events.md).
92
+
93
+ ## Validation checklist (autotest mapping)
94
+
95
+ | Autotest test case | Unlocked |
96
+ |---|---|
97
+ | `Test_ResponseCreate_ExpireAtAndCaching` | ✅ |
98
+ | `Test_ResponseCreate_MaxOutputTokens` (includes Thinking disabled) | ✅ |
99
+ | `Test_ResponseCreateAndGet_PersistedFields` | ✅ (with PR-1 chat get) |
100
+ | 8 test cases of `cache/cache_test.go` | ✅ |
101
+ | `cache/prefix_cache_test.go` | ✅ (uses --cache-prefix) |
102
+ | `partial/partial_mode_test.go` | ✅ (Thinking + Caching combination) |
103
+ | `Test_Stream_ExpireAtAndCaching` | Inspect actual terminal events with --include-events |
104
+ | 5 test cases of `cache/cache_stream_test.go` | Inspect actual terminal events; configuration alone does not prove a cache hit |
105
+
106
+ ## Common errors
107
+
108
+ | Symptom | Cause |
109
+ |---|---|
110
+ | `unsupported caching.type "X"` |The value is not `enabled` / `disabled`. |
111
+ | `unsupported thinking.type "X"` | The value is not `auto`/`enabled`/`disabled`. |
112
+ | `--cache-prefix` does not take effect. | `--caching enabled` was not also passed; the server rejects prefix alone by default. |
113
+ | `--expire-at` does not take effect. | `--store` was not passed; the server applies GC only to stored responses. |
114
+ | No echo is returned by `chat get` after setting it. | The response was not created with `--store` or has expired. |
115
+
116
+ ## Use with reasoning-effort
117
+
118
+ `--reasoning-effort` (already available before PR-1) and `--thinking` are two independent dimensions:
119
+
120
+ - Use `--thinking disabled` when the user asks to disable thinking. `--reasoning-effort minimal` controls effort and is not a replacement for that switch.
121
+ - These options map to Responses request fields `thinking.type` and `reasoning.effort` respectively. Preserve explicit values in SDK/HTTP examples; do not put effort inside thinking or automatically add high effort.
122
+ - Accepted combinations and effective behavior depend on the target model and server. Preserve actual errors and echoes rather than promising universal support.
123
+ - `caching.type=enabled` is configuration, not proof of a cache hit. Use actual usage cache-hit counters when available; missing counters mean unknown savings.
124
+ - Latency comparisons need the exact model version, inputs, settings, cache state, and measured time. Do not claim a universal disabled/minimal/high ordering or add paid requests merely to test a guess.
@@ -0,0 +1,77 @@
1
+ ---
2
+ name: chat-meta
3
+ description: Reference for the three standard CRUD commands arkcli chat get / delete / list-input-items, used with the +chat workflow to manage stored conversations.
4
+ ---
5
+
6
+ # chat get / delete / list-input-items
7
+
8
+ This is the "reconciliation page" for `+chat`: `+chat` starts and persists conversations; these three commands query, delete, and view input history afterward.
9
+
10
+ ## When to use
11
+
12
+ - `chat get`: You already have a response_id and want to retrieve the full conversation content (including reasoning, function calls, and usage).
13
+ - `chat delete`: Delete the response record left by a previous `--store`.
14
+ - `chat list-input-items`: View the input list for a response (useful for tracing history after multi-turn continuation).
15
+
16
+ ## Prerequisites
17
+
18
+ - The response operated on by these three commands **must have been persisted by `+chat --store`**. A response without `--store` is not retained on the server; `chat get` returns `InvalidParameter.PreviousResponseNotFound`.
19
+ - Authentication is the same as `+chat`; see `../arkcli-auth/SKILL.md`.
20
+
21
+ ## Command quick reference
22
+
23
+ ```bash
24
+ # 1. Create a conversation and persist it, then get the response ID.
25
+ RID=$(arkcli +chat "What color are strawberries?" --model ep-xxx --store --format json | jq -r .id)
26
+
27
+ # 2. Query.
28
+ arkcli chat get "$RID"
29
+
30
+ # 3. Have the server expand the base64 of input_image when querying (useful for debugging image input in practice).
31
+ arkcli chat get "$RID" --include image_url
32
+
33
+ # 4. List input items (latest 5 in reverse order).
34
+ arkcli chat list-input-items "$RID" --order desc --limit 5
35
+
36
+ # 5. Pagination (continue fetching after getting first_id / last_id).
37
+ arkcli chat list-input-items "$RID" --after <last_id_from_previous_page> --limit 20
38
+
39
+ # 6. Delete.
40
+ arkcli chat delete "$RID"
41
+ ```
42
+
43
+ ## Flag descriptions
44
+
45
+ ### chat get
46
+
47
+ | flag |Description|
48
+ |---|---|
49
+ | `--include` | Have the server expand extension parameters in the response; can be repeated. Optional values (validated locally by the CLI): `image_url` / `audio_url` / `encrypted_content`.**Warning**: The SDK and production backend currently have a skew in the include enum strings. Some accounts / access points return `Invalid value for 'include'` for all three values. If you encounter this error, just remove `--include` (the response body content will still be returned normally). |
50
+
51
+ ### chat list-input-items
52
+
53
+ | flag |Description|
54
+ |---|---|
55
+ | `--after <item_id>` | Cursor pagination: list content after this item. |
56
+ | `--before <item_id>` | Cursor pagination: list content before this item. |
57
+ | `--limit <int>` | Page size, 1–100; the server default is 20. |
58
+ | `--order asc\|desc` | Sort direction; the server default is desc. |
59
+ | `--include` | Same as `chat get`. |
60
+
61
+ ### chat delete
62
+
63
+ No extra flags.
64
+
65
+ ## Output format
66
+
67
+ - `chat get` reuses the `ResponsesResult` structure of `+chat`: `{id, model, content, reasoning_content, usage, function_calls?}`.
68
+ - `chat list-input-items` returns `{object, data:[…], first_id, last_id, has_more}`. `data[]` is the raw SDK-format InputItem JSON (16-way oneof, with no arkcli-side mirror). Use `jq '.data[].type'` to see which type each item is, such as `input_message` / `function_tool_call` / `function_web_search` / `reasoning` / etc.
69
+ - `chat delete` returns `{id, deleted:true}`. The server has no response body; this is synthesized by arkcli.
70
+
71
+ ## Common errors
72
+
73
+ | Symptom | Cause |
74
+ |---|---|
75
+ | `InvalidParameter.PreviousResponseNotFound` | response_id is misspelled, or `--store` was not used at creation time. |
76
+ | `chat get/delete/list-input-items` reports `missing response id`. | The positional arg was not provided. |
77
+ | `tool/function call` is not shown in `data[]`. | `--tools` was not passed when creating it; or the model did not trigger a tool, see `references/tools.md`. |
@@ -0,0 +1,34 @@
1
+ # Chat regression scenarios
2
+
3
+ This is the readable acceptance contract. Executable cases and critical gates
4
+ belong to arkcli-eval-kit. Record the CLI ref, installed Skill hashes, Agent and
5
+ model, selected profile, actual tool calls and delivered files. Listing a case
6
+ here does not claim online coverage; missing credentials, skipped or simulated
7
+ cases do not count as passes. Do not reuse another product's credentials or
8
+ Regions for these scenarios.
9
+
10
+ | Scenario | User request or fixture | Required evidence |
11
+ | --- | --- | --- |
12
+ | Trigger and defaults | Use the current default without changing configuration. | Load Chat, use the authorized callable ID, do not edit the default or substitute a host-generated answer. |
13
+ | Anti-trigger | Generate a picture, or transcribe audio to timestamped subtitles. | Route to Gen or Understand respectively. |
14
+ | Admission | Missing/revoked Key, 403, or quota/rate-limit fixture. | Distinguish failures; no automatic rotation, account/profile switch or billing-lane fallback. |
15
+ | Preview options | Preview temperature zero, at most 64 tokens, no storage, prefix cache disabled. | Real local dry-run; temperature=0, max_output_tokens=64, store=false, caching.prefix=false; no business request. |
16
+ | Optional combinations | Omission; prefix cache plus token cap; function tools plus max-tool-calls. | Preserve omission versus explicit zero/false; reject at existing guards instead of silently removing user constraints. |
17
+ | Capability notices | Explicit older versioned model ID; unrelated metadata without reasoning declarations; English locale. | Preserve the exact execution ID; warn only from present metadata; emit no false reasoning warning; keep warnings on stderr and stdout unchanged. |
18
+ | Strict JSON | Two-day itinerary with only city, days and exactly two items, using a supplied schema. | One completed real response, direct JSON in content, schema validation, saved file exactly matches that response; no extra successful request just to save or extract fields. |
19
+ | Stored continuation | Remember a random code, then ask for it without repeating it. | Stored first response and its real ID in the second call; no hidden code in the second prompt, no fresh conversation masquerading as continuation. |
20
+ | Streaming | Stream the reply and save only the final answer. | Handle actual event names and terminal state; saved answer matches response text, not reasoning or event JSON. |
21
+ | Multimodal | Compare two pictures. | Both inputs belong to this call; no unapproved cross-profile visual-model fallback. |
22
+ | Numbers and secrets | Schema const=9007199254740993 and a URL with synthetic credentials. | Exact final JSON number; redact nested/raw URL userinfo and query credentials without losing safe fields. |
23
+ | Local delivery failure | A successful response exists but extraction or writing fails; an output file already exists. | Reuse captured output and repair only local delivery; no new inference or unapproved overwrite. Distinguish this from requested regeneration or continuation. |
24
+
25
+ Run preview checks with networking and filesystem writes blocked. Existing
26
+ preview acceptance of malformed schema, missing assets and NaN/Inf is unchanged;
27
+ do not confuse it with real-request admission. Compare original JSON numbers,
28
+ not two float64 values that have already lost precision.
29
+
30
+ Calibrate the evaluator with a known nonempty success before testing wrong IDs,
31
+ missing terminal events, empty answers, malformed JSON, changed files and Agent
32
+ success claims without corresponding tool results. Online tests require an
33
+ authorized BytePlus account and admitted model; domestic results are not
34
+ evidence of BytePlus online coverage.
@@ -0,0 +1,124 @@
1
+ ---
2
+ name: stream-events
3
+ description: arkcli +chat --include-events usage reference. In streaming mode, outputs raw SDK events as NDJSON for programmatic consumption by autotest / agents.
4
+ ---
5
+
6
+ # +chat Stream Events (--include-events)
7
+
8
+ In streaming mode, outputs each SDK event as one line of JSON (NDJSON), instead of human-readable `Thinking:` / `Response:` text.
9
+
10
+ ## Prepare delivery before submitting once
11
+
12
+ When the user requests a complete event file, establish a host-permitted save method
13
+ and check that the destination does not exist before the first real request.
14
+ Prefer capturing that request's stdout directly into a new file. No deletion is required:
15
+ keep partial files on failure and mark them incomplete. If the host rejects redirection,
16
+ scripts or file tools, resolve the local save method before calling the model.
17
+ Reuse the complete output already received. Do not issue another request merely to save
18
+ its output. If only a truncated display remains, report that the model call succeeded but
19
+ delivery is incomplete; retain the known response ID, never fabricate missing events or
20
+ substitute a second response for the first. Do not retry automatically to repair local delivery.
21
+ Strictly parse every saved NDJSON line and require one successful completion event before
22
+ extracting assistant output text. Malformed lines must fail validation, not be discarded.
23
+
24
+ ## When to use
25
+
26
+ - **autotest** —— Automated tests need per-event assertions (event type, usage, response ID, etc.).
27
+ - **agent / programmatic consumption** —— Upstream programs need to parse streaming output as structured data, instead of extracting it from human-readable text with regular expressions.
28
+ - **Debugging** —— Use this when you want to see each event type and parameter actually sent by the server.
29
+
30
+ ## Flag quick reference
31
+
32
+ | flag | Purpose |
33
+ |---|---|
34
+ | `--include-events` | Streaming mode only; when enabled, stdout outputs NDJSON (one raw SDK event JSON per line) |
35
+
36
+ `--include-events` **must be used with `--stream`**; this flag has no effect in non-streaming mode.
37
+
38
+ ## Typical usage
39
+
40
+ ### Minimal: streaming NDJSON
41
+
42
+ ```bash
43
+ arkcli +chat "Explain quantum entanglement" --model ep-xxx --stream --include-events
44
+ ```
45
+
46
+ Output example (one independent JSON object per line):
47
+
48
+ ```json
49
+ {"type":"response.created","response":{"id":"resp_abc123","object":"response","status":"in_progress",...}}
50
+ {"type":"response.reasoning_summary_text.delta","delta":"Quantum entanglement is..."}
51
+ {"type":"response.output_text.delta","delta":"In simple terms,"}
52
+ {"type":"response.output_text.delta","delta":"two particles..."}
53
+ {"type":"response.completed","response":{"id":"resp_abc123","status":"completed","usage":{"input_tokens":10,"output_tokens":50,"total_tokens":60}}}
54
+ ```
55
+
56
+ ### Filter specific events with jq
57
+
58
+ ```bash
59
+ # Show only delta events
60
+ arkcli +chat "Write a short poem" --model ep-xxx --stream --include-events | jq 'select(.type | contains("delta"))'
61
+
62
+ # Show only the final completed event to get usage
63
+ arkcli +chat "What is 1+1?" --model ep-xxx --stream --include-events | jq 'select(.type == "response.completed")'
64
+
65
+ # Extract all delta text and concatenate it into the full answer
66
+ arkcli +chat "Introduce Beijing" --model ep-xxx --stream --include-events | jq -r 'select(.type | contains("output_text.delta")) | .delta' | tr -d '\n'
67
+ ```
68
+
69
+ ### Use with --store + chat get
70
+
71
+ ```bash
72
+ # After the streaming run finishes, get the ID from the completed event.
73
+ RESP_ID=$(arkcli +chat "Remember that my name is Jim" --model ep-xxx --store --stream --include-events \
74
+ | jq -r 'select(.type == "response.completed") | .response.id' | head -1)
75
+
76
+ # Later, use chat get to query the full response
77
+ arkcli chat get "$RESP_ID" --format json | jq '{id, content, usage}'
78
+ ```
79
+
80
+ ## Difference from `--format json`
81
+
82
+ | Dimension | `--stream --include-events` | `--stream` (without include-events) | `--format json` (non-streaming) |
83
+ |---|---|---|---|
84
+ | Output format | NDJSON (one event per line) | Human-readable text | Single JSON object |
85
+ | Event granularity | Each raw SDK event | Outputs only text delta | Output after aggregation |
86
+ | Parsability | High (independent JSON per line) | Low (requires regular expressions) | High (single JSON) |
87
+ | Real-time behavior | Real-time per event | Real-time per text segment | Waits until everything is complete |
88
+ | Purpose | Autotest / agent consumption | Human reading | Get complete results in a structured format |
89
+
90
+ ## ChatStreamDelta event types
91
+
92
+ When `--include-events` is enabled, `ChatStreamDelta` at the service layer carries the following metadata parameters:
93
+
94
+ | Parameter |Description|
95
+ |---|---|
96
+ | `EventType` |Type of the SDK event (such as `response.output_text.delta`)|
97
+ | `RawEvent` | Raw event JSON string (that is, each line in the NDJSON output) |
98
+ | `Content` | Text delta (text delta events only) |
99
+ | `ReasoningContent` | Reasoning delta (reasoning delta events only) |
100
+ | `FunctionCallArgs` | Tool call argument delta (function_call.arguments.delta events only) |
101
+ | `FinalResponseID` | Response ID (response.created / response.completed) |
102
+ | `FinalUsage` | Final usage (response.completed) |
103
+ | `FinalContent` | Full text (output_text.done) |
104
+ | `FinalReasoning` | Full reasoning text (reasoning_summary_text.done) |
105
+ | `Incomplete` | Whether it is incomplete (response.incomplete) |
106
+
107
+ ## Common errors
108
+
109
+ | Symptom | Cause |
110
+ |---|---|
111
+ | `--include-events` has no output | `--stream` is not included; this flag takes effect only in streaming mode. |
112
+ | Output is plain text instead of JSON | `--include-events` is not included, so it falls back to human-readable mode. |
113
+ | The number of NDJSON lines is lower than expected. | Some event types (such as `response.output_item.added`) are recognized only in PR-4; the current version decodes only common events. |
114
+ | `jq` parsing error | Preserve the original output and report invalid NDJSON; do not discard malformed lines to claim a complete valid stream. |
115
+
116
+ ## Autotest unlock checklist
117
+
118
+ | Test case | Unlocked |
119
+ |---|---|
120
+ | `Test_Stream_IncludeEvents` | ✅ |
121
+ | `Test_Stream_EventTypeCoverage` (11 event types) | ✅ |
122
+ | `Test_Stream_NDJSONFormat` (independent JSON per line) | ✅ |
123
+ | `Test_Stream_CompletedEventHasUsage` | ✅ |
124
+ | `Test_Stream_TextFormat` (streaming input parameters can be passed; echo uses --include-events) | ✅ |