flowjet 2.1.4__tar.gz → 2.1.5__tar.gz
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.
- {flowjet-2.1.4 → flowjet-2.1.5}/CHANGELOG.md +13 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/PKG-INFO +1 -1
- {flowjet-2.1.4 → flowjet-2.1.5}/pyproject.toml +1 -1
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/cli/stream.py +33 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/server/acp/agent.py +2 -6
- {flowjet-2.1.4 → flowjet-2.1.5}/.gitignore +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/LICENSE +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/README.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/config/nano-local.yml +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/config/nano-sandbox-soothe.yml +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/config/nano.yml +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/deploy/README.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/docs/completion-design.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/docs/impl/IG-001-openai-compatible-server.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/docs/impl/IG-002-isolated-thread-pool-runtime.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/docs/impl/IG-003-production-isolation-hardening.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/docs/specs/RFC-001-openai-compatible-api.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/docs/specs/RFC-002-isolated-thread-pool-runtime.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/docs/specs/RFC-003-production-isolation-hardening.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/docs/specs/RFC-004-unified-package.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/docs/specs/RFC-005-arcbox-tool-sandbox.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/docs/specs/rfc-history.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/docs/specs/rfc-index.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/docs/specs/rfc-namings.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/examples/README.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/__init__.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/__main__.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/README.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/gws-drive/SKILL.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/gws-drive-upload/SKILL.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/logo-generator-skill/.env.example +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/logo-generator-skill/README.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/logo-generator-skill/SKILL.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/logo-generator-skill/assets/background_library.html +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/logo-generator-skill/assets/showcase_template.html +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/logo-generator-skill/references/background_styles.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/logo-generator-skill/references/design_patterns.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/logo-generator-skill/references/webgl_backgrounds.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/logo-generator-skill/requirements.txt +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/logo-generator-skill/scripts/generate_showcase.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/logo-generator-skill/scripts/svg_to_png.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/SKILL.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/assets/brainstorming/spec-document-reviewer-prompt.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/assets/implementation/coding-plan-template.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/assets/implementation/impl-guide-template.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/assets/review/pr-review-template.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/assets/review/review-checklist.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/assets/specs/rfc-template.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/assets/specs/template-architecture-design.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/assets/specs/template-conceptual-design.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/assets/specs/template-impl-interface-design.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/assets/templates/template-drafts-readme.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/assets/templates/template-impl-readme.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/assets/templates/template-platonic.yml +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/assets/templates/template-rfc-history.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/assets/templates/template-rfc-index.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/assets/templates/template-rfc-namings.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/assets/templates/template-rfc-standard.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/BRAINSTORM/brainstorm.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/IMPL/impl-code.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/IMPL/impl-create-guide.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/IMPL/impl-full.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/IMPL/impl-update-guide.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/IMPL/impl-validate-guide.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/INIT/init-plan-modular-specs.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/INIT/init-recover-architecture.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/INIT/init-recover-conceptual.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/INIT/init-recover-impl-interface.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/INIT/init-scaffold.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/INIT/init-scan.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/REFERENCE.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/REVIEW/review-spec-compliance.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/SPECS/specs-check-compliance.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/SPECS/specs-check-taxonomy.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/SPECS/specs-generate-history.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/SPECS/specs-generate-index.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/SPECS/specs-generate-namings.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/SPECS/specs-refine.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/SPECS/specs-validate-consistency.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/WORKFLOW/workflow-overview.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/WORKFLOW/workflow-phase-1.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/WORKFLOW/workflow-phase-2.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/WORKFLOW/workflow-phase-3.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/research-bootstrap/SKILL.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/research-bootstrap/patterns/evidence-deep.json +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/research-bootstrap/patterns/evidence-first.json +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/research-bootstrap/patterns/idea-first.json +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/research-bootstrap/patterns/loop.json +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/research-bootstrap/patterns/paper-pipeline.json +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/research-bootstrap/patterns/rapid.json +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/research-bootstrap/patterns/rigor-first.json +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/research-bootstrap/patterns/stance-first.json +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/research-bootstrap/patterns/systematic-review.json +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/research-bootstrap/patterns/verify-loop.json +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/research-bootstrap/references/backends.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/research-bootstrap/references/handoff-ars-omr.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/research-bootstrap/references/handoff-omr-ars.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/research-bootstrap/references/routing.md +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/research-bootstrap/scripts/csljson_to_omr.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/research-bootstrap/scripts/papers_index_to_csljson.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/cli/__init__.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/cli/__main__.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/cli/agent.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/cli/cli.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/cli/completion/__init__.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/cli/completion/context.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/cli/completion/engine.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/cli/doctor_cmd.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/cli/doctor_fix_cmd.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/cli/progress.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/cli/serve_cmd.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/cli/setup_cmd.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/cli/shell/__init__.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/cli/shell/_fj.zsh +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/cli/shell/fj.bash +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/cli/threads.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/cli/tool_stream.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/__init__.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/_warnings.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/agent/__init__.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/agent/config.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/agent/factory.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/agent/skills.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/agent/wiring.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/agent/workspace.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/backend_config.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/bridges/base.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/bridges/nano/__init__.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/bridges/nano/adapter.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/bridges/nano/backend.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/bridges/nano/interrupts.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/bridges/nano/mapping.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/bridges/soothe/__init__.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/bridges/soothe/adapter.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/bridges/soothe/backend.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/events.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/identity.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/modes.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/protocol.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/runtime/__init__.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/runtime/direct.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/runtime/fake.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/runtime/isolation/__init__.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/runtime/isolation/adapter.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/runtime/isolation/admission.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/runtime/isolation/backend.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/runtime/isolation/errors.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/runtime/isolation/mode_gate.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/runtime/isolation/pool.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/runtime/isolation/request.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/runtime/isolation/workspace.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/sandbox/__init__.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/sandbox/arbox.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/sandbox/resolver.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/sandbox/settings.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/streaming/__init__.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/streaming/presentation.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/streaming/tool_results.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/core/streaming/tool_stream.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/home.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/server/__init__.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/server/__main__.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/server/acp/__init__.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/server/acp/routes.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/server/config.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/server/http/__init__.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/server/http/app.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/server/http/auth.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/server/openai_compat/__init__.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/server/openai_compat/errors.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/server/openai_compat/projection.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/server/openai_compat/routes.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/server/openai_compat/schemas.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/server/openai_compat/service.py +0 -0
- {flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/server/openai_compat/store.py +0 -0
|
@@ -10,6 +10,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
10
10
|
|
|
11
11
|
## [Unreleased]
|
|
12
12
|
|
|
13
|
+
## [2.1.5] — 2026-10-24
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- **`ask_user` pauses render as Markdown on ACP/UI hosts.** A clarification
|
|
18
|
+
turn's reply reused the CLI terminal block (space-indented `⏸ Paused for
|
|
19
|
+
input:` followed by `• option` lines). Hosts that render replies as Markdown
|
|
20
|
+
collapse the indentation, so the pause and its options displayed as a single
|
|
21
|
+
run-on paragraph. The ACP path now emits `format_questions_markdown()`: a
|
|
22
|
+
bold pause heading, a bold question (Q1:/Q2: numbering for multiple
|
|
23
|
+
questions), and options as `- **label** — description` bullets, keeping the
|
|
24
|
+
`(Recommended)` → ★ convention. The CLI keeps the plain-text block.
|
|
25
|
+
|
|
13
26
|
## [2.1.4] — 2026-10-23
|
|
14
27
|
|
|
15
28
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: flowjet
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.5
|
|
4
4
|
Summary: FlowJet — agent CLI (fj) and server (ACP + OpenAI-compatible HTTP) powered by Soothe
|
|
5
5
|
Project-URL: Homepage, https://github.com/caesar0301/flowjet
|
|
6
6
|
Project-URL: Repository, https://github.com/caesar0301/flowjet
|
|
@@ -420,6 +420,39 @@ def format_questions_block(
|
|
|
420
420
|
return "\n".join(lines) + "\n"
|
|
421
421
|
|
|
422
422
|
|
|
423
|
+
def format_questions_markdown(questions: tuple[dict[str, Any], ...]) -> str:
|
|
424
|
+
"""Render ``ask_user`` questions as Markdown for hosts that render replies.
|
|
425
|
+
|
|
426
|
+
Same content as :func:`format_questions_block` (the CLI renders that block
|
|
427
|
+
to a terminal), but in Markdown so ACP/UI hosts show a bold pause heading
|
|
428
|
+
with bulleted, bolded options. The plain-text block cannot be reused here:
|
|
429
|
+
its space indentation collapses under Markdown rendering and the whole
|
|
430
|
+
block displays as one run-on paragraph.
|
|
431
|
+
"""
|
|
432
|
+
if not questions:
|
|
433
|
+
return "**⏸ Paused for input**\n"
|
|
434
|
+
lines: list[str] = ["**⏸ Paused for input**"]
|
|
435
|
+
for qi, q in enumerate(questions, 1):
|
|
436
|
+
header = str(q.get("header") or "").strip()
|
|
437
|
+
question = str(q.get("question") or "").strip()
|
|
438
|
+
label = f"[{header}] {question}" if header else question
|
|
439
|
+
prefix = f"Q{qi}: " if len(questions) > 1 else ""
|
|
440
|
+
lines.append(f"\n**{prefix}{label}**")
|
|
441
|
+
options = q.get("options")
|
|
442
|
+
if isinstance(options, list):
|
|
443
|
+
for opt in options:
|
|
444
|
+
if not isinstance(opt, dict):
|
|
445
|
+
continue
|
|
446
|
+
opt_label = str(opt.get("label") or "").strip()
|
|
447
|
+
desc = str(opt.get("description") or "").strip()
|
|
448
|
+
marker = " ★" if "(Recommended)" in opt_label or "Recommended" in opt_label else ""
|
|
449
|
+
if desc:
|
|
450
|
+
lines.append(f"- **{opt_label}{marker}** — {desc}")
|
|
451
|
+
else:
|
|
452
|
+
lines.append(f"- **{opt_label}{marker}**")
|
|
453
|
+
return "\n".join(lines) + "\n"
|
|
454
|
+
|
|
455
|
+
|
|
423
456
|
async def stream_query(
|
|
424
457
|
agent: SootheNanoAgent,
|
|
425
458
|
query: str,
|
|
@@ -475,13 +475,9 @@ class FlowJetAcpAgent:
|
|
|
475
475
|
# end with no content at all (thoughts are intermediate
|
|
476
476
|
# narration). The CLI renders the same block.
|
|
477
477
|
if event.questions:
|
|
478
|
-
from flowjet.cli.stream import
|
|
478
|
+
from flowjet.cli.stream import format_questions_markdown
|
|
479
479
|
|
|
480
|
-
block =
|
|
481
|
-
event.questions,
|
|
482
|
-
session_id,
|
|
483
|
-
resume_hint="",
|
|
484
|
-
)
|
|
480
|
+
block = format_questions_markdown(event.questions)
|
|
485
481
|
await client.session_update(
|
|
486
482
|
session_id,
|
|
487
483
|
update_agent_message_text(block),
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/logo-generator-skill/.env.example
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/logo-generator-skill/requirements.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/platonic-coding/references/REFERENCE.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/research-bootstrap/patterns/loop.json
RENAMED
|
File without changes
|
|
File without changes
|
{flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/research-bootstrap/patterns/rapid.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/research-bootstrap/references/backends.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowjet-2.1.4 → flowjet-2.1.5}/src/flowjet/builtin_skills/research-bootstrap/references/routing.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|