induscode 0.1.0__py3-none-any.whl
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.
- induscode/__init__.py +56 -0
- induscode/addons/__init__.py +176 -0
- induscode/addons/contract.py +923 -0
- induscode/addons/dispatch/__init__.py +43 -0
- induscode/addons/dispatch/event_dispatcher.py +348 -0
- induscode/addons/dispatch/tool_interceptor.py +349 -0
- induscode/addons/host.py +469 -0
- induscode/addons/loader.py +314 -0
- induscode/addons/manifest.py +232 -0
- induscode/addons/surface.py +199 -0
- induscode/boot/__init__.py +108 -0
- induscode/boot/auth_vault.py +323 -0
- induscode/boot/boot.py +210 -0
- induscode/boot/contract.py +223 -0
- induscode/boot/invocation.py +117 -0
- induscode/boot/runners/__init__.py +42 -0
- induscode/boot/runners/link_runner.py +82 -0
- induscode/boot/runners/oneshot_runner.py +85 -0
- induscode/boot/runners/registry.py +46 -0
- induscode/boot/runners/repl_runner.py +340 -0
- induscode/boot/runners/session.py +549 -0
- induscode/boot/stages.py +198 -0
- induscode/boot/upgrade/__init__.py +36 -0
- induscode/boot/upgrade/apply.py +125 -0
- induscode/boot/upgrade/upgrades.py +136 -0
- induscode/briefing/__init__.py +115 -0
- induscode/briefing/compose.py +414 -0
- induscode/briefing/contract.py +528 -0
- induscode/briefing/macros.py +721 -0
- induscode/briefing/skills.py +417 -0
- induscode/capability_deck/__init__.py +233 -0
- induscode/capability_deck/bridge_ledger/__init__.py +66 -0
- induscode/capability_deck/bridge_ledger/key.py +181 -0
- induscode/capability_deck/bridge_ledger/ledger.py +276 -0
- induscode/capability_deck/bridge_ledger/network.py +336 -0
- induscode/capability_deck/builtin_bridge.py +358 -0
- induscode/capability_deck/cards/__init__.py +116 -0
- induscode/capability_deck/cards/bg_process.py +482 -0
- induscode/capability_deck/cards/memory.py +226 -0
- induscode/capability_deck/cards/saas.py +280 -0
- induscode/capability_deck/cards/task.py +256 -0
- induscode/capability_deck/cards/todo.py +312 -0
- induscode/capability_deck/contract.py +450 -0
- induscode/capability_deck/manifest.py +126 -0
- induscode/capability_deck/provision.py +217 -0
- induscode/channels/__init__.py +146 -0
- induscode/channels/contract.py +585 -0
- induscode/channels/framer.py +132 -0
- induscode/channels/link/__init__.py +50 -0
- induscode/channels/link/dialog.py +246 -0
- induscode/channels/link/driver.py +308 -0
- induscode/channels/link/server.py +217 -0
- induscode/channels/oneshot.py +178 -0
- induscode/channels/ops.py +140 -0
- induscode/channels/session_ops.py +172 -0
- induscode/conductor/__init__.py +240 -0
- induscode/conductor/catalog.py +309 -0
- induscode/conductor/conductor.py +1084 -0
- induscode/conductor/contract.py +1035 -0
- induscode/conductor/matcher.py +291 -0
- induscode/conductor/serialize.py +575 -0
- induscode/conductor/signal_hub.py +382 -0
- induscode/conductor/skill_parse.py +294 -0
- induscode/conductor/transcript_store.py +449 -0
- induscode/console/__init__.py +236 -0
- induscode/console/app.py +1677 -0
- induscode/console/components/__init__.py +62 -0
- induscode/console/components/banner.py +499 -0
- induscode/console/components/banner_sweep.py +188 -0
- induscode/console/components/emblem.py +181 -0
- induscode/console/components/status_bar.py +102 -0
- induscode/console/contract.py +836 -0
- induscode/console/input/__init__.py +107 -0
- induscode/console/input/chord.py +197 -0
- induscode/console/input/dir_reader.py +113 -0
- induscode/console/input/intents.py +258 -0
- induscode/console/input/providers.py +469 -0
- induscode/console/mount.py +137 -0
- induscode/console/overlays/__init__.py +94 -0
- induscode/console/overlays/auth.py +503 -0
- induscode/console/overlays/pickers.py +526 -0
- induscode/console/overlays/router.py +129 -0
- induscode/console/overlays/sessions.py +232 -0
- induscode/console/reducer.py +145 -0
- induscode/console/resume_picker.py +156 -0
- induscode/console/slash_commands/__init__.py +78 -0
- induscode/console/slash_commands/builtins.py +254 -0
- induscode/console/slash_commands/dynamic.py +217 -0
- induscode/console/slash_commands/integrations.py +949 -0
- induscode/console/slash_commands/transcript.py +404 -0
- induscode/console/slash_commands/workbench.py +430 -0
- induscode/console/startup.py +434 -0
- induscode/console/theme/__init__.py +44 -0
- induscode/console/theme/adapter.py +168 -0
- induscode/console/theme/palette.py +128 -0
- induscode/console/theme/resolve.py +123 -0
- induscode/console/theme/tokens.py +185 -0
- induscode/console_slash/__init__.py +111 -0
- induscode/console_slash/contract.py +185 -0
- induscode/console_slash/registry.py +140 -0
- induscode/console_slash/resolve.py +194 -0
- induscode/console_slash/shared.py +172 -0
- induscode/entry.py +108 -0
- induscode/insight/__init__.py +153 -0
- induscode/insight/collector.py +73 -0
- induscode/insight/replay.py +305 -0
- induscode/insight/wrapper.py +1115 -0
- induscode/kit/__init__.py +82 -0
- induscode/kit/clipboard_image.py +215 -0
- induscode/kit/external_editor.py +120 -0
- induscode/kit/image.py +188 -0
- induscode/kit/shell.py +89 -0
- induscode/kit/tool_fetch.py +288 -0
- induscode/launch/__init__.py +224 -0
- induscode/launch/catalog.py +310 -0
- induscode/launch/contract.py +569 -0
- induscode/launch/credentials.py +852 -0
- induscode/launch/invocation/__init__.py +39 -0
- induscode/launch/invocation/attachments.py +281 -0
- induscode/launch/invocation/flags.py +210 -0
- induscode/launch/invocation/read.py +369 -0
- induscode/launch/invocation/usage.py +110 -0
- induscode/launch/oauth.py +808 -0
- induscode/launch/packages.py +299 -0
- induscode/launch/pickers.py +291 -0
- induscode/py.typed +0 -0
- induscode/runtime_bridge/__init__.py +166 -0
- induscode/runtime_bridge/bridges/__init__.py +66 -0
- induscode/runtime_bridge/bridges/_drive.py +268 -0
- induscode/runtime_bridge/bridges/builtins.py +177 -0
- induscode/runtime_bridge/bridges/claude_cli.py +198 -0
- induscode/runtime_bridge/bridges/codex_cli.py +203 -0
- induscode/runtime_bridge/bridges/indusagi_cli.py +217 -0
- induscode/runtime_bridge/broker.py +397 -0
- induscode/runtime_bridge/contract.py +734 -0
- induscode/runtime_bridge/sink.py +351 -0
- induscode/sessions/__init__.py +25 -0
- induscode/sessions/contract.py +119 -0
- induscode/sessions/library.py +350 -0
- induscode/settings/__init__.py +47 -0
- induscode/settings/contract.py +313 -0
- induscode/settings/manager.py +268 -0
- induscode/transcript_export/__init__.py +109 -0
- induscode/transcript_export/contract.py +522 -0
- induscode/transcript_export/publish.py +455 -0
- induscode/transcript_export/sgr.py +566 -0
- induscode/transcript_export/template.py +319 -0
- induscode/transcript_export/theme_bridge.py +325 -0
- induscode/window_budget/__init__.py +76 -0
- induscode/window_budget/budget/__init__.py +26 -0
- induscode/window_budget/budget/estimate.py +273 -0
- induscode/window_budget/budget/gate.py +60 -0
- induscode/window_budget/budget/slice.py +145 -0
- induscode/window_budget/condenser.py +170 -0
- induscode/window_budget/contract.py +329 -0
- induscode/window_budget/summarize/__init__.py +33 -0
- induscode/window_budget/summarize/condense.py +212 -0
- induscode/window_budget/summarize/prompt.py +241 -0
- induscode/workspace/__init__.py +30 -0
- induscode/workspace/brand.py +96 -0
- induscode/workspace/locator.py +269 -0
- induscode-0.1.0.dist-info/METADATA +97 -0
- induscode-0.1.0.dist-info/RECORD +167 -0
- induscode-0.1.0.dist-info/WHEEL +4 -0
- induscode-0.1.0.dist-info/entry_points.txt +3 -0
- induscode-0.1.0.dist-info/licenses/CREDITS.md +22 -0
- induscode-0.1.0.dist-info/licenses/NOTICE +7 -0
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
"""Deck provisioning — the single data-driven assembler.
|
|
2
|
+
|
|
3
|
+
One function, :func:`provision_deck`, turns a :data:`DeckProfile` plus a
|
|
4
|
+
:class:`DeckContext` into an assembled :class:`ToolDeck`. It replaces what
|
|
5
|
+
would otherwise be a trio of near-identical ``build_authoring_tools`` /
|
|
6
|
+
``build_survey_tools`` / ``build_all_tools`` functions with a single walk over
|
|
7
|
+
a :data:`PROFILE_TABLE`-shaped policy mapping: the table says which catalog
|
|
8
|
+
rows each profile draws from, the assembler builds exactly those rows against
|
|
9
|
+
the context, and the result exposes the two reads the conductor needs —
|
|
10
|
+
:meth:`ToolDeck.tools` (the flat capability list) and :meth:`ToolDeck.box`
|
|
11
|
+
(the consumable ``AgentTool`` list it wires in as ``options.tools``).
|
|
12
|
+
|
|
13
|
+
Why a table rather than three functions:
|
|
14
|
+
|
|
15
|
+
- The catalog is already the single source of truth (``CAPABILITY_CARDS``
|
|
16
|
+
plus the app-novel cards). A profile is just a *selection policy* over that
|
|
17
|
+
catalog, so it is data — a small row per profile — not control flow.
|
|
18
|
+
- Adding a profile, or moving a card between profiles, is a one-line table
|
|
19
|
+
edit with no new branch to keep in sync.
|
|
20
|
+
|
|
21
|
+
Breadth runs ``authoring`` (narrowest, read-only) → ``survey`` (all
|
|
22
|
+
built-ins) → ``all`` (built-ins + app cards), spelled out per profile below.
|
|
23
|
+
|
|
24
|
+
The three profiles, in increasing breadth:
|
|
25
|
+
|
|
26
|
+
- ``authoring`` — the read-only built-in subset: the observe-only tools the
|
|
27
|
+
framework exposes (read/ls/grep/find/web search & fetch/checklist-read). No
|
|
28
|
+
filesystem mutation, no shell, no app-novel cards. The safe selection for a
|
|
29
|
+
session that must inspect a workspace without changing it.
|
|
30
|
+
- ``survey`` — the wider built-in subset: every framework built-in,
|
|
31
|
+
including the mutating ones (write/edit/bash/process/checklist-write).
|
|
32
|
+
Still no app-novel cards — just the full native tool set.
|
|
33
|
+
- ``all`` — everything: every framework built-in plus every app-novel
|
|
34
|
+
card (the checklist, the background-process proxy, the delegate/sub-agent
|
|
35
|
+
action, the SaaS connector, working memory).
|
|
36
|
+
|
|
37
|
+
The built-in catalog tags each native tool with the profiles it belongs to
|
|
38
|
+
(``read`` etc. are observe-only; ``bash``/``write`` are mutating); this table
|
|
39
|
+
maps the deck profiles onto those membership selections, so the
|
|
40
|
+
read-only/wider split is a table lookup rather than a hand-maintained second
|
|
41
|
+
tool list.
|
|
42
|
+
|
|
43
|
+
.. warning:: **Profile-name inversion — ported verbatim** (plan §5 rule 5,
|
|
44
|
+
analysis 03 risk-1). The deck profile ``authoring`` maps to built-in
|
|
45
|
+
membership tag ``survey`` (the read-only subset) and the deck profile
|
|
46
|
+
``survey`` maps to membership ``all``: a deck profile is a *selection
|
|
47
|
+
policy*, distinct from the per-tool membership tags the built-in catalog
|
|
48
|
+
carries, and the names deliberately do not line up. The
|
|
49
|
+
``capability-deck`` test suite pins this exact semantics — do not
|
|
50
|
+
"intuitively" fix the table.
|
|
51
|
+
|
|
52
|
+
Bridge (MCP) capabilities are *not* selected here — they are grafted at
|
|
53
|
+
runtime through the bridge ledger and concatenated by the host onto a deck's
|
|
54
|
+
:meth:`ToolDeck.tools`; provisioning only assembles the static catalog.
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
from __future__ import annotations
|
|
58
|
+
|
|
59
|
+
from collections.abc import Mapping, Sequence
|
|
60
|
+
from dataclasses import dataclass
|
|
61
|
+
from types import MappingProxyType
|
|
62
|
+
|
|
63
|
+
from .cards import APP_NOVEL_CARDS
|
|
64
|
+
from .contract import (
|
|
65
|
+
AnyCapability,
|
|
66
|
+
CapabilityCard,
|
|
67
|
+
DeckBox,
|
|
68
|
+
DeckContext,
|
|
69
|
+
DeckProfile,
|
|
70
|
+
deck_fault,
|
|
71
|
+
)
|
|
72
|
+
from .manifest import cards_for_profile
|
|
73
|
+
|
|
74
|
+
__all__ = [
|
|
75
|
+
"cards_for_deck_profile",
|
|
76
|
+
"provision_deck",
|
|
77
|
+
]
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
# ---------------------------------------------------------------------------
|
|
81
|
+
# Profile table
|
|
82
|
+
# ---------------------------------------------------------------------------
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
@dataclass(frozen=True, slots=True, kw_only=True)
|
|
86
|
+
class _ProfilePolicy:
|
|
87
|
+
"""What card sources a profile draws from. The table is the policy; the
|
|
88
|
+
assembler is a thin walk over it. Each row is pure data — no build logic —
|
|
89
|
+
so a profile's breadth is declared in one place."""
|
|
90
|
+
|
|
91
|
+
# The built-in catalog *membership* this deck profile selects from
|
|
92
|
+
# (`cards_for_profile` reads it):
|
|
93
|
+
# - "survey" — the observe-only built-ins (the read-only subset).
|
|
94
|
+
# - "all" — every built-in, mutating tools included (the wider set).
|
|
95
|
+
# The deck `authoring` profile maps to the read-only built-in membership
|
|
96
|
+
# and the deck `survey` profile to the full built-in set; the names differ
|
|
97
|
+
# because a deck profile is a *selection policy*, distinct from the
|
|
98
|
+
# per-tool membership tags the built-in catalog carries.
|
|
99
|
+
builtins: DeckProfile
|
|
100
|
+
# Whether the app-novel cards (checklist, background process, delegate,
|
|
101
|
+
# SaaS, memory) are included. Only the broadest profile grants the full set.
|
|
102
|
+
app_cards: bool
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
#: The selection policy for every :data:`DeckProfile`, in one table.
|
|
106
|
+
#:
|
|
107
|
+
#: Read top-to-bottom as increasing breadth: ``authoring`` takes only the
|
|
108
|
+
#: read-only built-in subset; ``survey`` takes every built-in (mutating tools
|
|
109
|
+
#: included) but no app cards; ``all`` takes every built-in and every app
|
|
110
|
+
#: card. Reshaping a profile is a single-row edit here — no new branch in the
|
|
111
|
+
#: assembler.
|
|
112
|
+
#:
|
|
113
|
+
#: PORTED VERBATIM from TS ``provision.ts`` — including the
|
|
114
|
+
#: authoring→``survey`` / survey→``all`` name inversion (see the module
|
|
115
|
+
#: docstring's warning).
|
|
116
|
+
_PROFILE_TABLE: Mapping[str, _ProfilePolicy] = MappingProxyType(
|
|
117
|
+
{
|
|
118
|
+
"authoring": _ProfilePolicy(builtins="survey", app_cards=False),
|
|
119
|
+
"survey": _ProfilePolicy(builtins="all", app_cards=False),
|
|
120
|
+
"all": _ProfilePolicy(builtins="all", app_cards=True),
|
|
121
|
+
}
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
# ---------------------------------------------------------------------------
|
|
126
|
+
# Selection
|
|
127
|
+
# ---------------------------------------------------------------------------
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def cards_for_deck_profile(profile: DeckProfile) -> list[CapabilityCard]:
|
|
131
|
+
"""The catalog rows a profile selects, in catalog order: the built-in
|
|
132
|
+
subset the policy names, followed by the app-novel cards when the policy
|
|
133
|
+
grants them.
|
|
134
|
+
|
|
135
|
+
Derived purely from the profile table + the catalog — no per-profile
|
|
136
|
+
branching beyond the table lookup.
|
|
137
|
+
|
|
138
|
+
:param profile: the requested deck profile
|
|
139
|
+
:raises DeckFault: ``unknown_capability`` when the profile is not in the
|
|
140
|
+
table
|
|
141
|
+
"""
|
|
142
|
+
policy = _PROFILE_TABLE.get(profile)
|
|
143
|
+
if policy is None:
|
|
144
|
+
raise deck_fault(
|
|
145
|
+
"unknown_capability",
|
|
146
|
+
f'No deck profile is registered under "{profile}".',
|
|
147
|
+
)
|
|
148
|
+
builtins = cards_for_profile(policy.builtins)
|
|
149
|
+
return [*builtins, *APP_NOVEL_CARDS] if policy.app_cards else builtins
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
# ---------------------------------------------------------------------------
|
|
153
|
+
# Assembly
|
|
154
|
+
# ---------------------------------------------------------------------------
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
def _build_selected(
|
|
158
|
+
cards: Sequence[CapabilityCard], ctx: DeckContext
|
|
159
|
+
) -> list[AnyCapability]:
|
|
160
|
+
"""Build every selected card against a context, surfacing a typed
|
|
161
|
+
:class:`DeckFault` (``build_failed``) if any card's ``build`` throws — so
|
|
162
|
+
a single bad factory names itself instead of sinking the whole assembly
|
|
163
|
+
opaquely."""
|
|
164
|
+
built: list[AnyCapability] = []
|
|
165
|
+
for card in cards:
|
|
166
|
+
try:
|
|
167
|
+
built.append(card.build(ctx))
|
|
168
|
+
except Exception as cause:
|
|
169
|
+
raise deck_fault(
|
|
170
|
+
"build_failed",
|
|
171
|
+
f'Capability "{card.id}" failed to build.',
|
|
172
|
+
cause,
|
|
173
|
+
) from cause
|
|
174
|
+
return built
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
class _ProvisionedDeck:
|
|
178
|
+
"""The assembled deck: capabilities built once at provision time, handed
|
|
179
|
+
out as fresh copies so a caller cannot mutate the backing list."""
|
|
180
|
+
|
|
181
|
+
__slots__ = ("_capabilities",)
|
|
182
|
+
|
|
183
|
+
def __init__(self, capabilities: list[AnyCapability]) -> None:
|
|
184
|
+
self._capabilities = capabilities
|
|
185
|
+
|
|
186
|
+
def tools(self) -> list[AnyCapability]:
|
|
187
|
+
return list(self._capabilities)
|
|
188
|
+
|
|
189
|
+
def box(self) -> DeckBox:
|
|
190
|
+
return list(self._capabilities)
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
def provision_deck(profile: DeckProfile, ctx: DeckContext) -> _ProvisionedDeck:
|
|
194
|
+
"""Provision a :class:`ToolDeck` for a profile and working context.
|
|
195
|
+
|
|
196
|
+
Looks the profile up in the profile table, selects its catalog rows,
|
|
197
|
+
builds each against ``ctx``, and returns a deck that hands the resulting
|
|
198
|
+
capabilities out two ways:
|
|
199
|
+
|
|
200
|
+
- :meth:`ToolDeck.tools` — the flat ``list[AnyCapability]`` for
|
|
201
|
+
inspection, naming, and ``--tools`` style selection.
|
|
202
|
+
- :meth:`ToolDeck.box` — the same list (= the framework ``AgentTool``
|
|
203
|
+
list) the conductor consumes verbatim as
|
|
204
|
+
``SessionConductorOptions.tools``.
|
|
205
|
+
|
|
206
|
+
The capabilities are built once, at provision time, and the same list
|
|
207
|
+
backs both reads (returned as fresh copies so a caller cannot mutate the
|
|
208
|
+
deck's backing list). Bridge/MCP tools are concatenated onto ``tools()``
|
|
209
|
+
by the host after provisioning; they are not part of the static selection.
|
|
210
|
+
|
|
211
|
+
:param profile: the requested capability set
|
|
212
|
+
(``authoring`` | ``survey`` | ``all``)
|
|
213
|
+
:param ctx: the working context (cwd + injectable backends) to bind cards
|
|
214
|
+
to
|
|
215
|
+
"""
|
|
216
|
+
selected = cards_for_deck_profile(profile)
|
|
217
|
+
return _ProvisionedDeck(_build_selected(selected, ctx))
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"""Channels subsystem — public barrel (port of TS ``src/channels/index.ts``).
|
|
2
|
+
|
|
3
|
+
Re-exports the FROZEN channels contract: the JSON-RPC 2.0 envelope constants
|
|
4
|
+
(:data:`PROTOCOL_VERSION`, :data:`OP_ERROR`, :func:`is_reply_ok`), the
|
|
5
|
+
declarative operation registry (:class:`Op`, :data:`OpRegistry`,
|
|
6
|
+
:func:`define_ops`), the NDJSON framer surface (:class:`NdjsonFramer` /
|
|
7
|
+
:func:`encode_line` / :func:`decode_lines`), the dialog primitives
|
|
8
|
+
(:class:`Ask` / :class:`Tell` / :class:`DialogBridge`), the
|
|
9
|
+
:class:`ChannelContext`, the wire session projection (:data:`LinkSnapshot` /
|
|
10
|
+
:func:`project_snapshot`), and the oneshot channel shapes
|
|
11
|
+
(:class:`OneshotRequest` / :class:`OneshotStrategy` / :func:`run_oneshot`) —
|
|
12
|
+
plus the link server, generated driver, and dialog bridge from
|
|
13
|
+
:mod:`induscode.channels.link`. Consumers import the channel surface from
|
|
14
|
+
``induscode.channels`` rather than reaching into individual modules.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
from __future__ import annotations
|
|
18
|
+
|
|
19
|
+
from induscode.channels.contract import (
|
|
20
|
+
DEFAULT_CHANNEL_TIMINGS,
|
|
21
|
+
LINK_SNAPSHOT_FIELDS,
|
|
22
|
+
OP_ERROR,
|
|
23
|
+
PROTOCOL_VERSION,
|
|
24
|
+
REQUEST_ID_PREFIX,
|
|
25
|
+
Ask,
|
|
26
|
+
AskAnswer,
|
|
27
|
+
ChannelContext,
|
|
28
|
+
ChannelTimings,
|
|
29
|
+
ConductorState,
|
|
30
|
+
DialogBridge,
|
|
31
|
+
LinkSnapshot,
|
|
32
|
+
NdjsonFramer,
|
|
33
|
+
OneshotRequest,
|
|
34
|
+
OneshotShape,
|
|
35
|
+
OneshotStrategy,
|
|
36
|
+
Op,
|
|
37
|
+
OpError,
|
|
38
|
+
OpRegistry,
|
|
39
|
+
ReadableChunks,
|
|
40
|
+
RequestId,
|
|
41
|
+
SessionConductor,
|
|
42
|
+
Signal,
|
|
43
|
+
Tell,
|
|
44
|
+
ThinkingLevel,
|
|
45
|
+
Usage,
|
|
46
|
+
WritableLine,
|
|
47
|
+
define_ops,
|
|
48
|
+
is_reply_ok,
|
|
49
|
+
mint_wire_id,
|
|
50
|
+
resolve_timings,
|
|
51
|
+
signal_to_wire,
|
|
52
|
+
)
|
|
53
|
+
from induscode.channels.framer import decode_lines, encode_line, ndjson_framer
|
|
54
|
+
from induscode.channels.link import (
|
|
55
|
+
DIALOG_TABLE,
|
|
56
|
+
DialogBridgeDeps,
|
|
57
|
+
DialogSpec,
|
|
58
|
+
LinkClient,
|
|
59
|
+
LinkDriverHandle,
|
|
60
|
+
LinkDriverIo,
|
|
61
|
+
LinkRequestError,
|
|
62
|
+
LinkServer,
|
|
63
|
+
LinkServerIo,
|
|
64
|
+
LinkedDialogBridge,
|
|
65
|
+
create_dialog_bridge,
|
|
66
|
+
create_link_driver,
|
|
67
|
+
create_link_server,
|
|
68
|
+
make_dialog_methods,
|
|
69
|
+
)
|
|
70
|
+
from induscode.channels.oneshot import inert_dialog, run_oneshot
|
|
71
|
+
from induscode.channels.ops import (
|
|
72
|
+
OpRegistryHandle,
|
|
73
|
+
UnknownOpError,
|
|
74
|
+
build_ops,
|
|
75
|
+
dispatch,
|
|
76
|
+
has_op,
|
|
77
|
+
methods_of,
|
|
78
|
+
)
|
|
79
|
+
from induscode.channels.session_ops import (
|
|
80
|
+
DEFAULT_THINKING,
|
|
81
|
+
SESSION_OPS,
|
|
82
|
+
project_snapshot,
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
__all__ = [
|
|
86
|
+
"Ask",
|
|
87
|
+
"AskAnswer",
|
|
88
|
+
"ChannelContext",
|
|
89
|
+
"ChannelTimings",
|
|
90
|
+
"ConductorState",
|
|
91
|
+
"DEFAULT_CHANNEL_TIMINGS",
|
|
92
|
+
"DEFAULT_THINKING",
|
|
93
|
+
"DIALOG_TABLE",
|
|
94
|
+
"DialogBridge",
|
|
95
|
+
"DialogBridgeDeps",
|
|
96
|
+
"DialogSpec",
|
|
97
|
+
"LINK_SNAPSHOT_FIELDS",
|
|
98
|
+
"LinkClient",
|
|
99
|
+
"LinkDriverHandle",
|
|
100
|
+
"LinkDriverIo",
|
|
101
|
+
"LinkRequestError",
|
|
102
|
+
"LinkServer",
|
|
103
|
+
"LinkServerIo",
|
|
104
|
+
"LinkSnapshot",
|
|
105
|
+
"LinkedDialogBridge",
|
|
106
|
+
"NdjsonFramer",
|
|
107
|
+
"OP_ERROR",
|
|
108
|
+
"OneshotRequest",
|
|
109
|
+
"OneshotShape",
|
|
110
|
+
"OneshotStrategy",
|
|
111
|
+
"Op",
|
|
112
|
+
"OpError",
|
|
113
|
+
"OpRegistry",
|
|
114
|
+
"OpRegistryHandle",
|
|
115
|
+
"PROTOCOL_VERSION",
|
|
116
|
+
"REQUEST_ID_PREFIX",
|
|
117
|
+
"ReadableChunks",
|
|
118
|
+
"RequestId",
|
|
119
|
+
"SESSION_OPS",
|
|
120
|
+
"SessionConductor",
|
|
121
|
+
"Signal",
|
|
122
|
+
"Tell",
|
|
123
|
+
"ThinkingLevel",
|
|
124
|
+
"UnknownOpError",
|
|
125
|
+
"Usage",
|
|
126
|
+
"WritableLine",
|
|
127
|
+
"build_ops",
|
|
128
|
+
"create_dialog_bridge",
|
|
129
|
+
"create_link_driver",
|
|
130
|
+
"create_link_server",
|
|
131
|
+
"decode_lines",
|
|
132
|
+
"define_ops",
|
|
133
|
+
"dispatch",
|
|
134
|
+
"encode_line",
|
|
135
|
+
"has_op",
|
|
136
|
+
"inert_dialog",
|
|
137
|
+
"is_reply_ok",
|
|
138
|
+
"make_dialog_methods",
|
|
139
|
+
"methods_of",
|
|
140
|
+
"mint_wire_id",
|
|
141
|
+
"ndjson_framer",
|
|
142
|
+
"project_snapshot",
|
|
143
|
+
"resolve_timings",
|
|
144
|
+
"run_oneshot",
|
|
145
|
+
"signal_to_wire",
|
|
146
|
+
]
|