@agentshouse/skills 0.1.0-c813d62fd9bd4 → 0.1.0-c8323f136cf4d
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/guide/apps/chat.md
CHANGED
|
@@ -8,10 +8,13 @@ no dependency. `const chat = await houseBridge.chat.mount(element, options)`, on
|
|
|
8
8
|
object House hands the page as `window.houseBridge`, which `houseBridge()` of
|
|
9
9
|
`@agentshouse/app-bridge` returns, draws it in `element` over the App's own client and
|
|
10
10
|
resolves to a handle: `chat.update(options)` replaces its options and `chat.unmount()`
|
|
11
|
-
removes it. It fills the element and
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
removes it. It fills the element and lays itself out by the width it gives: the list of the
|
|
12
|
+
User's Agents and their chats or one chat on a narrow element, the list beside the chat on a
|
|
13
|
+
wider one, and the chat's details beside both on a wide one. With no chat open it shows what
|
|
14
|
+
asks the User and what works now. `conversation` opens one chat, and with it `null` the Chat
|
|
15
|
+
opens a new chat with `agent`, the Agent it goes to, or the list with neither. `onOpen` hears
|
|
16
|
+
each chat it opens as `{ conversation, agent }`, and both `null` when the User goes back to the
|
|
17
|
+
list, and `onLink` takes a link without a scheme in place of the browser.
|
|
15
18
|
Theme its own styles with CSS custom properties on the element or an ancestor:
|
|
16
19
|
`--chat-background`, `--chat-surface`, `--chat-text`, `--chat-text-muted`,
|
|
17
20
|
`--chat-accent`, `--chat-line`, `--chat-attention`, `--chat-danger`, `--chat-font`,
|
|
@@ -19,4 +22,4 @@ Theme its own styles with CSS custom properties on the element or an ancestor:
|
|
|
19
22
|
spacing); an unset one keeps House's light or dark look. It shows conversations only where
|
|
20
23
|
the release declares them; otherwise it lists no conversation and no Agent. A secret
|
|
21
24
|
question is never answered here; typed answers live in the Presentation State members named
|
|
22
|
-
`typed
|
|
25
|
+
`typed:…` and whether the list shows in `chat:page-list`: leave them.
|
|
@@ -12,12 +12,13 @@ option and `conversation.retry(conversation, message, operation)` sends a refuse
|
|
|
12
12
|
again. A release that declares no conversations is refused each with `action-undeclared`
|
|
13
13
|
naming its act.
|
|
14
14
|
|
|
15
|
-
`conversation.pin(figures)`
|
|
16
|
-
`conversation.openTurn(conversation, turn)`
|
|
17
|
-
|
|
18
|
-
chat's suggested next
|
|
19
|
-
`dismissedSuggestion` shows, on this
|
|
20
|
-
|
|
15
|
+
`conversation.pin(figures)` keeps the Chat's pinned figures, which every conversation's
|
|
16
|
+
`pins` shows, `conversation.openTurn(conversation, turn)` each chat's last opened turn,
|
|
17
|
+
which its row's `opened` shows beside `answered`, the turn its Agent answered last, and
|
|
18
|
+
`conversation.dismissSuggestion(conversation, suggestion)` each chat's suggested next
|
|
19
|
+
prompt the User dismissed, which that conversation's `dismissedSuggestion` shows, on this
|
|
20
|
+
browser for House and every App alike; none of it is sent to House. Without conversations
|
|
21
|
+
they read none and keep nothing.
|
|
21
22
|
|
|
22
23
|
`conversation.pageMetadata(appName, address)` answers the Page metadata block a message
|
|
23
24
|
carries after the User's text: the App's name, the page's address and, while the page
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
How an Agent function document in the Private Room is written, one for each Room it serves.
|
|
4
4
|
|
|
5
|
-
Agent function, `/rooms/private/rooms/<room-handle>/agent-functions/<name>.md`, serving the Room `<room-handle>` names: `description`; `input`, a text saying what to send, empty if nothing; `agent`, the identifier of the one of your User's current Agents it starts; and `afk`, `true` for a run nobody watches, off when absent, under which Kit answers every question and permission prompt of the conversation a request starts by itself, for that conversation's life. The body is the instruction, which never leaves the Private Room. Writing it needs your User's write in that Room. House writes its card, the description, input and Agent, at `/rooms/<room-handle>/house/agent-functions/<name>.md`, where every member reads it, and refuses a name a card there already holds as `name_taken`. An Agent function a second Room needs is a copy under that Room's handle. Anyone who writes that Room asks it with `agent-functions/send` naming the card, or names the `agent` with their own words, as the Agent's Trust level in that Room allows: under Any request, the default, either starts at once; under Agent functions only the card starts at once and own words are refused `own_text_not_admitted`; under Approve each either waits for the Agent's owner to approve it. Its owner sets the level on the Room's House page; the owner, their own agents and their Private Room's Triggers start it at once at every level, a Trigger of any other Room asks as that Room's writers do, and `inspect` on a Room root names the Agents you may ask there with their levels. An Agent function request's input is text the Agent reads, and House checks no shape. Mail your conversation sends with `agent-functions/mail/send` and a request it sent reaches the conversation that request started at once under Any request; below it, `agent-functions/mail/send` answers `waiting: true` and the mail waits for that Agent's owner, and a declined one comes back to you as House's message saying so. That conversation's mail always comes back to yours. A request's run is the first turn of the conversation it starts: during that turn the Agent names the document it wrote in the request's Room as the request's result with `agent-functions/result/set`, and the turn's end finishes the request. The conversation stays active until it is Done, which `conversations/mark-done` sets at the end of a turn and which nothing undoes, so mail reaches it after its run.
|
|
5
|
+
Agent function, `/rooms/private/rooms/<room-handle>/agent-functions/<name>.md`, serving the Room `<room-handle>` names: `description`; `input`, a text saying what to send, empty if nothing; `agent`, the identifier of the one of your User's current Agents it starts; and `afk`, `true` for a run nobody watches, off when absent, under which Kit answers every question and permission prompt of the conversation a request starts by itself, for that conversation's life. The body is the instruction, which never leaves the Private Room. Writing it needs your User's write in that Room. House writes its card, the description, input and Agent, at `/rooms/<room-handle>/house/agent-functions/<name>.md`, where every member reads it, and refuses a name a card there already holds as `name_taken`. An Agent function a second Room needs is a copy under that Room's handle. While its document is not written in this form, every request for it is refused `agent_function_unreadable`. Anyone who writes that Room asks it with `agent-functions/send` naming the card, or names the `agent` with their own words, as the Agent's Trust level in that Room allows: under Any request, the default, either starts at once; under Agent functions only the card starts at once and own words are refused `own_text_not_admitted`; under Approve each either waits for the Agent's owner to approve it. Its owner sets the level on the Room's House page; the owner, their own agents and their Private Room's Triggers start it at once at every level, a Trigger of any other Room asks as that Room's writers do, and `inspect` on a Room root names the Agents you may ask there with their levels. An Agent function request's input is text the Agent reads, and House checks no shape. Mail your conversation sends with `agent-functions/mail/send` and a request it sent reaches the conversation that request started at once under Any request; below it, `agent-functions/mail/send` answers `waiting: true` and the mail waits for that Agent's owner, and a declined one comes back to you as House's message saying so. That conversation's mail always comes back to yours. A request's run is the first turn of the conversation it starts: during that turn the Agent names the document it wrote in the request's Room as the request's result with `agent-functions/result/set`, and the turn's end finishes the request. The conversation stays active until it is Done, which `conversations/mark-done` sets at the end of a turn and which nothing undoes, so mail reaches it after its run.
|
|
6
6
|
|
|
7
7
|
A Trigger's `message` action puts its `text`, a link to what matched and its files into the active conversation, one not Done, its Agent function started from that Room for what the Event is about: the chat of a customer's `chat-message`, the matched document or item, or the Trigger for a `cron` clock. Its Event shows `continued` with that `request`; with none, it starts the Agent function as a `agent_function` action does, `requested`. A conversation waiting for approval refuses it, `refused` with `conversation_waiting`. The Agent reads a customer's message as a customer's words, one from a Trigger of its owner's Private Room as the owner's instruction, and any other as what matched, never an instruction. A `agent_function` action starts a new request on every Event. A `done` action marks Done every active conversation a request of its Trigger's Room started for the Event's document, whoever owns its Agent, but one waiting for approval, which stays for its owner to approve or decline; its Event shows `marked` with their number, `conversations`, 0 when there are none, as on a `cron` clock, whose Event names no document.
|
|
8
8
|
|
|
@@ -12,4 +12,4 @@ In your Private Room alone, a `function` action naming no `app` runs one of your
|
|
|
12
12
|
|
|
13
13
|
A Trigger acts on at most <trigger-events-per-hour> Events in each UTC hour, across its versions, skipped and failed ones not counted; `triggers/fired/list` shows the first past the number `missed: "skipped"` with `code: "cap_reached"`, which starts nothing, and none later that hour; the Trigger shows as failing. A Trigger whose own actions make what it fires on stops there, so narrow its condition.
|
|
14
14
|
|
|
15
|
-
`{kind: "agent_function", card: "<name>", payload: "<input>"}` starts an [Agent function](reference/agent-function) and `{kind: "message", card: "<name>", text: "<text>"}` messages it; no such card is refused `not_found`, a retired one `agent_function_retired
|
|
15
|
+
`{kind: "agent_function", card: "<name>", payload: "<input>"}` starts an [Agent function](reference/agent-function) and `{kind: "message", card: "<name>", text: "<text>"}` messages it; no such card is refused `not_found`, a retired one `agent_function_retired`, and one whose document misses its type's form fails `agent_function_unreadable` for good. `{kind: "done"}` marks Done each active conversation the Room's Agent function requests started for the Event's document, `marked` with their number.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentshouse/skills",
|
|
3
|
-
"version": "0.1.0-
|
|
3
|
+
"version": "0.1.0-c8323f136cf4d",
|
|
4
4
|
"description": "The upstream Skills agents.house serves its agents, verbatim, and the texts it writes for them: the Guide, its own Skills among the pages, and the Agent instructions",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|