omnara 1.0.24 → 1.0.26

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 (3) hide show
  1. package/README.md +98 -0
  2. package/dist/bin.js +1427 -691
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -24,3 +24,101 @@ See the [Omnara docs](https://docs.omnara.com) and the [GitHub repository](https
24
24
  ## License
25
25
 
26
26
  Apache-2.0
27
+
28
+ ## Project integrations
29
+
30
+ Each project integration owns its provider identity, credentials, and optional launcher.
31
+ Create a disconnected draft, connect its account, then choose launch settings.
32
+ Names are immutable: 1–32 letters, numbers, or hyphens, starting with a letter.
33
+
34
+ With an organization and project selected:
35
+
36
+ ```sh
37
+ omnara integrations definitions
38
+ omnara integrations create --body '{"name":"engineering","integration_kind":"slack_thread","settings":{}}'
39
+ omnara integrations list
40
+ ```
41
+
42
+ Use the returned integration ID as `INTEGRATION_ID`; keep it as `SLACK_INTEGRATION_ID` for the launcher
43
+ example below. Connect Slack through browser authorization using an existing
44
+ Slack app:
45
+
46
+ ```sh
47
+ omnara integrations slack "$INTEGRATION_ID" --client-id "$SLACK_CLIENT_ID" \
48
+ --client-secret "$SLACK_CLIENT_SECRET" --signing-secret "$SLACK_SIGNING_SECRET"
49
+ omnara integrations slack --help
50
+ omnara integrations get "$INTEGRATION_ID"
51
+ ```
52
+
53
+ `integrations slack` also supports automatic Slack app creation with `--app-name` and
54
+ `--app-configuration-token`. Reconnecting preserves the saved launcher settings.
55
+
56
+ For GitHub or Discord, create a project credential with `secrets create`, or reuse
57
+ an existing credential of the matching provider kind. Read `setup_revision` from
58
+ `integrations get` before configuring the integration. The server verifies the credentials and
59
+ rejects a stale revision.
60
+
61
+ ```sh
62
+ omnara integrations create --body '{"name":"reviewer","integration_kind":"github_pr","settings":{}}'
63
+ # Set INTEGRATION_ID to this new integration's ID and SETUP_REVISION to its current setup_revision.
64
+ omnara integrations configure "$INTEGRATION_ID" --expected-setup-revision "$SETUP_REVISION" \
65
+ --provider-tenant-id "$GITHUB_APP_ID" --provider-account-ref "$GITHUB_INSTALLATION_ID" \
66
+ --credential-secret-id "$SECRET_ID"
67
+ omnara integrations configure --help
68
+ ```
69
+
70
+ GitHub uses its numeric App ID and Installation ID; the credential's App ID must
71
+ match. Discord uses its Application ID and discovers the bot User ID from its token. Configure Discord's
72
+ interaction public key with `--provider-config '{"public_key":"YOUR_64_HEX_PUBLIC_KEY"}'`
73
+ before using a launcher or interaction handler. Discord launchers include a handler by default. Set its
74
+ Interactions Endpoint URL to
75
+ `https://YOUR_OMNARA_HOST/api/integrations/discord/APPLICATION_ID/interactions`.
76
+ Omnara manages one Gateway connection per saved Discord integration.
77
+
78
+ `integrations update` replaces the integration's settings. Only `settings` belongs in
79
+ an update; name and `integration_kind` are supplied on create.
80
+
81
+ ```sh
82
+ omnara integrations update "$SLACK_INTEGRATION_ID" --body '{
83
+ "settings": {"launcher": {"profiles": ["aprf_aeaqcaibaeaqcaibaeaqcaibae"]}}
84
+ }'
85
+ omnara integrations profiles "$SLACK_INTEGRATION_ID" --profile-ids "$PROFILE_ID" --profile-ids "$SECOND_PROFILE_ID"
86
+ ```
87
+
88
+ Slack and Discord launchers contain only ordered, distinct public profile IDs:
89
+ one starts immediately; several offer a menu selecting exactly one. Slack launches
90
+ from mentions wherever the bot can receive messages, and from DMs without a mention.
91
+ Discord launches from mentions in servers where the bot has access; DMs do not launch.
92
+ Manage channel access in Slack or Discord. `integrations profiles` preserves the
93
+ integration's other settings.
94
+
95
+ GitHub uses `launcher.profile`, `launcher.trigger` (`mention`, `pull_request_opened`, or `both`),
96
+ and optional `launcher.repository_id`. PR-open launches, mention launches and comments
97
+ that direct agents require repository write access. The definitions catalog
98
+ publishes each integration's complete settings schema in `capabilities.settings`.
99
+
100
+ Select tools and interaction handlers independently in agent configurations:
101
+ tools use keys such as `int__engineering__post_message`, and interaction handlers
102
+ use `engineering: {}`. Tool entries accept permissions, enabled state and deferral.
103
+ For the shipped thread and PR tools, destinations come from the integration-agent
104
+ conversation context assigned by provider/scheduled launches. These tools fail
105
+ without that context; their arguments cannot choose another destination. Integrations can
106
+ also define standalone tools that use their credentials without a conversation.
107
+ Shipped interaction handlers use the assigned conversation and accept empty arguments.
108
+ Incoming subscriptions belong to the integration and are attached via
109
+ launch requests or the integration subscriptions API.
110
+ `integrations get` and `integrations definitions` show optional
111
+ `capabilities.subscription.conversation_schema`. Attachments specify the integration
112
+ and conversation; the integration determines which activity is forwarded. Tools and
113
+ handlers expose static `input_schema`. A launcher adds its provider's missing tools and
114
+ handler to future agents; editing settings does not rewrite existing agents.
115
+
116
+ ```sh
117
+ omnara integrations disconnect "$INTEGRATION_ID"
118
+ omnara integrations delete "$INTEGRATION_ID"
119
+ ```
120
+
121
+ Disconnect stops provider access for that integration and keeps its setup for reconnecting.
122
+ Delete removes that integration and revokes its capabilities. Other integrations keep their own
123
+ lifecycle, including integrations sharing a credential. Existing agents and history remain
124
+ usable through the dashboard and API.