@researai/deepscientist 1.5.5 → 1.5.6

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@researai/deepscientist",
3
- "version": "1.5.5",
3
+ "version": "1.5.6",
4
4
  "description": "Local-first research operating system with a Python runtime and npm launcher",
5
5
  "license": "MIT",
6
6
  "files": [
package/pyproject.toml CHANGED
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "deepscientist"
7
- version = "1.5.5"
7
+ version = "1.5.6"
8
8
  description = "DeepScientist Core skeleton"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -5,4 +5,4 @@ __all__ = ["__version__"]
5
5
  try:
6
6
  __version__ = _package_version("deepscientist")
7
7
  except PackageNotFoundError: # pragma: no cover - source checkout fallback
8
- __version__ = "1.5.5"
8
+ __version__ = "1.5.6"
@@ -745,7 +745,7 @@ class PromptBuilder:
745
745
  "- response_pattern: say what changed -> say what it means -> say what happens next",
746
746
  "- interaction_protocol: first message may be plain conversation; after that, treat artifact.interact threads and mailbox polls as the main continuity spine across TUI, web, and connectors",
747
747
  "- mailbox_protocol: artifact.interact(include_recent_inbound_messages=True) is the queued human-message mailbox; when it returns user text, treat that input as higher priority than background subtasks until it has been acknowledged",
748
- "- acknowledgment_protocol: after artifact.interact returns any human message, immediately call artifact.interact(...) again to confirm receipt; if answerable, answer directly, otherwise state the short plan, nearest checkpoint, and that the current background subtask is paused",
748
+ "- acknowledgment_protocol: after artifact.interact returns any human message, immediately send one substantive artifact.interact(...) follow-up; if the active connector runtime already emitted a transport-level receipt acknowledgement, do not send a redundant receipt-only message; if answerable, answer directly, otherwise state the short plan, nearest checkpoint, and that the current background subtask is paused",
749
749
  "- progress_protocol: emit artifact.interact(kind='progress', reply_mode='threaded', ...) at real human-meaningful checkpoints; if no natural checkpoint appears during active user-relevant work, send a concise keepalive before you drift beyond roughly 10 to 30 tool calls without a user-visible update",
750
750
  "- smoke_then_detach_protocol: for baseline reproduction, main experiments, and analysis experiments, first validate the command path with a bounded smoke test; once the smoke test passes, launch the real long run with bash_exec(mode='detach', ...) and usually leave timeout_seconds unset rather than guessing a fake deadline",
751
751
  "- progress_first_monitoring_protocol: when supervising a long-running bash_exec session, judge health by forward progress rather than by whether the final artifact has already appeared within a short window",
@@ -2813,8 +2813,8 @@ class QuestService:
2813
2813
  ),
2814
2814
  self.localized_copy(
2815
2815
  quest_root=quest_root,
2816
- zh="- 立即再调用一次 artifact.interact(...),明确告知你已经收到这些用户消息。",
2817
- en="- Immediately call artifact.interact(...) again to confirm that you received these user messages.",
2816
+ zh="- 立即发送一条有实际内容的 follow-up artifact.interact(...);如果当前 connector 的运行时已经替你发过即时回执,就不要再重复发送一条只有“已收到/处理中”的确认。",
2817
+ en="- Immediately send one substantive follow-up artifact.interact(...); if the active connector runtime already sent the transport-level receipt acknowledgement, do not send a redundant receipt-only message such as 'received' or 'processing'.",
2818
2818
  ),
2819
2819
  self.localized_copy(
2820
2820
  quest_root=quest_root,
@@ -3,6 +3,8 @@
3
3
  - connector_contract_id: qq
4
4
  - connector_contract_scope: loaded only when QQ is the active or bound external connector for this quest
5
5
  - connector_contract_goal: use `artifact.interact(...)` as the main durable user-visible thread on QQ instead of exposing raw internal runner or tool chatter
6
+ - qq_runtime_ack_rule: the QQ bridge itself emits the immediate transport-level receipt acknowledgement before the model turn starts
7
+ - qq_no_duplicate_ack_rule: do not waste your first model response or first `artifact.interact(...)` call on a redundant receipt-only acknowledgement such as "received", "已收到", or "I am processing" when the bridge already sent that
6
8
  - qq_reply_style: keep QQ replies concise, milestone-first, respectful, and easy to scan on a phone
7
9
  - qq_reply_length_rule: for ordinary QQ progress updates, normally use only 2 to 4 short sentences, or 3 short bullets at most
8
10
  - qq_summary_first_rule: start with the conclusion the user cares about, then what it means, then the next action
@@ -16,6 +18,7 @@
16
18
  - qq_default_text_rule: plain text is the default and safest QQ mode
17
19
  - qq_absolute_path_rule: when you request native QQ image or file delivery via an attachment `path`, prefer an absolute path
18
20
  - qq_failure_rule: if `artifact.interact(...)` returns `attachment_issues` or `delivery_results` errors, treat that as a real delivery failure and adapt before assuming the user received the media
21
+ - qq_first_followup_rule: after a new inbound QQ message, your first substantive follow-up should either answer directly or give the first meaningful checkpoint and next action, not a second bare acknowledgement
19
22
 
20
23
  ## QQ Runtime Capabilities
21
24
 
@@ -1027,7 +1027,8 @@ For `artifact.interact(...)` specifically:
1027
1027
  - ordinary user-facing progress updates should read like a short collaborator message, not like a monitoring transcript, execution diary, or internal postmortem
1028
1028
  - when `artifact.interact(...)` returns queued user requirements, treat that mailbox payload as the latest user instruction bundle
1029
1029
  - if queued user requirements were returned, treat them as higher priority than the current background subtask until you have acknowledged them
1030
- - immediately follow a non-empty mailbox poll with another `artifact.interact(...)` update that confirms receipt
1030
+ - immediately follow a non-empty mailbox poll with one substantive `artifact.interact(...)` follow-up update
1031
+ - if the active connector runtime already emitted a transport-level receipt acknowledgement before your turn, do not send a redundant receipt-only update such as "received" or "processing"
1031
1032
  - if the request is directly answerable, answer it in that immediate follow-up update
1032
1033
  - otherwise say the current subtask is being paused, give a short execution plan plus nearest report-back point, then complete the user request first
1033
1034
  - after completing that interrupting user request, send another `artifact.interact(...)` update with the full result before resuming older work
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deepscientist-tui",
3
- "version": "1.5.5",
3
+ "version": "1.5.6",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "main": "dist/index.js",