@ekanos/cli 0.5.1 → 0.6.0
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/README.md +1 -1
- package/dist/commands/agents-init.d.ts +33 -0
- package/dist/commands/agents-init.js +113 -0
- package/dist/commands/agents-init.js.map +1 -0
- package/dist/commands/agents.d.ts +3 -1
- package/dist/commands/agents.js +14 -5
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/catalog.js +3 -2
- package/dist/commands/catalog.js.map +1 -1
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.js +2 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/templates/agents-claude.md.tmpl +14 -0
- package/templates/claude-skill.md.tmpl +4 -8
- package/templates/package.json.tmpl +1 -1
- package/templates/skills/build-agent/SKILL.md +110 -0
- package/templates/skills/build-agent/references/agent-json.md +85 -0
- package/templates/skills/build-agent/references/rollout.md +53 -0
- package/templates/skills/build-agent/references/triggers.md +47 -0
- package/templates/skills/ekanos-platform/SKILL.md +98 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Who gets the agent: rollout options
|
|
2
|
+
|
|
3
|
+
Two shapes. Recommend one, and say why in terms of the user's teams.
|
|
4
|
+
|
|
5
|
+
## Provided for every team (an agent template)
|
|
6
|
+
|
|
7
|
+
Built with `ekanos agents` by a Source admin.
|
|
8
|
+
|
|
9
|
+
- **Defined once.** Instructions, model, tools, approvals, skills, which
|
|
10
|
+
connections it uses, and what teams may add.
|
|
11
|
+
- **Drafts are private.** `apply` stores a numbered version; no team sees it
|
|
12
|
+
until it is published.
|
|
13
|
+
- **Publishing reaches every team in the Source.** Each sees it under Agents →
|
|
14
|
+
"Provided for your team". There is no list of chosen teams: every team can
|
|
15
|
+
see it, and each decides whether to turn it on.
|
|
16
|
+
- **Turning it on** makes the team's own copy. The person who turns it on
|
|
17
|
+
becomes its owner; the agent uses that person's and that team's
|
|
18
|
+
connections, so a team that has not connected a `required` product sees
|
|
19
|
+
"needs setup" instead of a working agent.
|
|
20
|
+
- **Updates.** Each publish updates every team that follows the latest
|
|
21
|
+
version. A team can **pin** a version instead; it stays there and is told
|
|
22
|
+
when a newer one is published.
|
|
23
|
+
- **Rollback.** `ekanos agents rollback <key> --to <n> --yes` publishes an
|
|
24
|
+
earlier version to every team that follows it.
|
|
25
|
+
- **What stays the team's:** whether it is on, its triggers, its own
|
|
26
|
+
connections, its run history, and whatever `teamCustomization` lets it add.
|
|
27
|
+
- **When a new version needs more access** than a team confirmed (a new
|
|
28
|
+
product, a tool that now runs without approval), the team's owner is asked
|
|
29
|
+
to confirm again; until then the agent keeps only what needs no new
|
|
30
|
+
confirmation.
|
|
31
|
+
|
|
32
|
+
Good for: the same job done by several teams; a central owner who improves
|
|
33
|
+
it over time; consistent behaviour and approvals.
|
|
34
|
+
|
|
35
|
+
Piloting: publish, then have one team turn it on first. Teams that never
|
|
36
|
+
turn it on are unaffected. Or keep it as an applied draft until the pilot
|
|
37
|
+
plan is ready.
|
|
38
|
+
|
|
39
|
+
## A team's own agent
|
|
40
|
+
|
|
41
|
+
Built by a team in the app (Agents → New). Only that team has it; the Source
|
|
42
|
+
cannot update or roll it back, and nothing about it is visible to other teams.
|
|
43
|
+
|
|
44
|
+
Good for: one team's own process; experiments a team owns.
|
|
45
|
+
|
|
46
|
+
## Questions that decide it
|
|
47
|
+
|
|
48
|
+
- How many teams do this work? The same way?
|
|
49
|
+
- Who should own improvements — one central person, or each team?
|
|
50
|
+
- Must every team follow the same approval rules (e.g. customer-facing
|
|
51
|
+
replies always reviewed)?
|
|
52
|
+
- Do teams need to add their own tools or knowledge, and should they be
|
|
53
|
+
allowed to? (`teamCustomization`, all off by default.)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# What starts the agent: triggers
|
|
2
|
+
|
|
3
|
+
Triggers belong to each team. They are not part of the agent template: a team
|
|
4
|
+
adds them on its copy (Agents → the agent → Triggers) after turning it on.
|
|
5
|
+
Your job in the interview is to say which triggers each team will want, and
|
|
6
|
+
what it must connect first, so the team-side checklist is complete.
|
|
7
|
+
|
|
8
|
+
## Kinds a team can add
|
|
9
|
+
|
|
10
|
+
- **An integration's event** — any event a connected integration declares
|
|
11
|
+
(the catalog lists them per product as `agentEvents`). The team picks the
|
|
12
|
+
event and fills in its filter (the fields the event declares — e.g. labels,
|
|
13
|
+
a team, a group, tags). When the integration also has a **channel**, the
|
|
14
|
+
agent answers where the event happened (on the issue, on the ticket), and
|
|
15
|
+
that reply tool runs on its own by default.
|
|
16
|
+
- **Schedule** — a cron and time zone, with "what to do each time".
|
|
17
|
+
- **Webhook** — a URL any system can call, with "what to do with each
|
|
18
|
+
request".
|
|
19
|
+
- **Slack** — chosen channels and/or direct messages in a connected Slack.
|
|
20
|
+
|
|
21
|
+
## Integrations with agent events
|
|
22
|
+
|
|
23
|
+
Check `ekanos catalog <product> --source <slug> --json` for what is actually
|
|
24
|
+
there; these are the known shapes.
|
|
25
|
+
|
|
26
|
+
**Linear** (`linear.mentioned`, `linear.assigned`, `linear.issue_labeled`) —
|
|
27
|
+
the agent becomes a teammate in Linear: @mention it, assign it an issue, or
|
|
28
|
+
apply a label. Each team needs two things in the app: each person's own
|
|
29
|
+
Linear connection (for the tools), and the team's own Linear app for the
|
|
30
|
+
agent (client id, secret and webhook signing secret, entered in Ekanos).
|
|
31
|
+
Guide: https://sdk.ekanos.dev/guides/linear-agent
|
|
32
|
+
|
|
33
|
+
**Zendesk** (`zendesk.ticket_created`, `zendesk.comment_added`; filters such
|
|
34
|
+
as brand, group, tags, organization) — when present in the catalog, each team
|
|
35
|
+
connects its own Zendesk (subdomain plus an OAuth client it creates in
|
|
36
|
+
Zendesk) and adds a Zendesk webhook pointing at its Ekanos endpoint. The agent
|
|
37
|
+
answers on the ticket as a public reply or an internal note — recommend
|
|
38
|
+
internal notes, or approval on public replies, until the team trusts it.
|
|
39
|
+
|
|
40
|
+
## Checklist to hand each team
|
|
41
|
+
|
|
42
|
+
1. Agents → "Provided for your team" → Turn on.
|
|
43
|
+
2. Connect every `required` product and sign in to any MCP server that needs
|
|
44
|
+
it (the agent shows what is missing).
|
|
45
|
+
3. Do each integration's own setup (team app, webhook) from its guide.
|
|
46
|
+
4. Confirm access if asked.
|
|
47
|
+
5. Add the triggers above, then run one real example and review it.
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ekanos-platform
|
|
3
|
+
description: How Ekanos is organized — Sources, team accounts, seats and roles, products (integrations and experiences), connections, and managed agents — and which of those the ekanos CLI can change. Use whenever a request involves who gets something (one team or every team), who can set it up, whether something is "connected" or "enabled", or explaining Ekanos to the user before building an integration or an agent.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# How Ekanos is organized
|
|
7
|
+
|
|
8
|
+
Explain these in plain words when a decision depends on them. Docs:
|
|
9
|
+
https://sdk.ekanos.dev/concepts/sources-and-teams (or search the
|
|
10
|
+
`ekanos-sdk-docs` MCP server). Never guess a rule that is not here or in the
|
|
11
|
+
docs — ask, or check the CLI.
|
|
12
|
+
|
|
13
|
+
## Sources and team accounts
|
|
14
|
+
|
|
15
|
+
- A **Source** is one Ekanos customer's whole deployment: its brand, domain,
|
|
16
|
+
users and catalog. Ekanos is white-label, so the people inside a Source see
|
|
17
|
+
only their own brand.
|
|
18
|
+
- A Source holds many **team accounts**. A team is where the work happens:
|
|
19
|
+
its members, its data, its connections, its agents. Teams in the same Source
|
|
20
|
+
do not see each other's data.
|
|
21
|
+
- Team members have one of three team roles — **owner**, **admin**,
|
|
22
|
+
**member** — which govern that team only. Being a team owner gives no
|
|
23
|
+
authority over the Source.
|
|
24
|
+
- **"Source" is admin vocabulary.** Team members never see the word. When you
|
|
25
|
+
describe what a team will see, say "provided for your team", never "the
|
|
26
|
+
Source's agent". Use "Source" freely with the person you are helping only
|
|
27
|
+
if they are a Source admin or developer (they are, if the CLI works for
|
|
28
|
+
them).
|
|
29
|
+
|
|
30
|
+
## Seats: who can use the CLI on a Source
|
|
31
|
+
|
|
32
|
+
`npx ekanos sources --json` lists the user's seats.
|
|
33
|
+
|
|
34
|
+
| Seat | Can |
|
|
35
|
+
|---|---|
|
|
36
|
+
| `developer` | Submit integrations; read the catalog; apply agent **drafts** |
|
|
37
|
+
| `source_admin` | Everything a developer can, plus **publish** agents to every team and manage the Source's roster |
|
|
38
|
+
|
|
39
|
+
Only an Ekanos super admin grants seats. If the user lacks the seat a step
|
|
40
|
+
needs, say which and stop — there is no way around it from the CLI.
|
|
41
|
+
|
|
42
|
+
## Products: integrations and experiences
|
|
43
|
+
|
|
44
|
+
Everything in the catalog (`npx ekanos catalog --source <slug> --json`) is a
|
|
45
|
+
**product** of one of two kinds:
|
|
46
|
+
|
|
47
|
+
- **Integration** — a connection to a third party (Linear, Zendesk, Slack…).
|
|
48
|
+
Brings tools an agent can call, and may declare **agent events** that start
|
|
49
|
+
agents (`linear.mentioned`, `zendesk.ticket_created`…).
|
|
50
|
+
- **Experience** — an Ekanos-native capability (Agents, Workflows, Home…).
|
|
51
|
+
Never "connected"; it is simply on or off for the Source.
|
|
52
|
+
|
|
53
|
+
## Is it usable? Four separate facts
|
|
54
|
+
|
|
55
|
+
Ask them in this order; each catalog product reports where it stands
|
|
56
|
+
(`availability` and `setupSteps`).
|
|
57
|
+
|
|
58
|
+
1. **Given to the Source** — `availability` is `enabled` (on), `turned-off`
|
|
59
|
+
(given, but a Source setting or plan has it off) or `available` (Ekanos
|
|
60
|
+
offers it; this Source has not been given it). A product missing from the
|
|
61
|
+
catalog altogether is not offered to this Source. Giving a Source a product
|
|
62
|
+
is an Ekanos super admin's step (`setupSteps` names it with actor
|
|
63
|
+
`ekanos`) — not something a Source admin or the CLI can do.
|
|
64
|
+
2. **Connected by a team** — a team (or a person, for per-person
|
|
65
|
+
integrations) signed in to the third party. Connections belong to a team,
|
|
66
|
+
never to the Source: two teams using Linear each connect their own.
|
|
67
|
+
3. **Set up by the team** where needed — some integrations have each team
|
|
68
|
+
bring its own app (a team-provided app: client id, secret, webhook signing
|
|
69
|
+
secret entered in Ekanos). Those secrets are typed into the app, never
|
|
70
|
+
into a chat or a file.
|
|
71
|
+
4. **Used by an agent** — granted in the agent's tools.
|
|
72
|
+
|
|
73
|
+
A product that is "enabled" is not therefore "connected". Say which one you
|
|
74
|
+
mean.
|
|
75
|
+
|
|
76
|
+
## Managed agents
|
|
77
|
+
|
|
78
|
+
An agent is **data held by Ekanos**, not code: instructions, a model, the
|
|
79
|
+
tools it may use, which calls wait for a person's approval, and skills. It is
|
|
80
|
+
changed through the CLI or the app, with no deploy.
|
|
81
|
+
|
|
82
|
+
- **Provided for every team** — a Source admin defines it once with
|
|
83
|
+
`ekanos agents` (a template). Each team sees it under Agents → "Provided for
|
|
84
|
+
your team" and turns it on; it then runs on that team's own connections.
|
|
85
|
+
Publishing a new version updates every team that follows it.
|
|
86
|
+
- **A team's own** — built by a team in the app (Agents → New). Only that team
|
|
87
|
+
has it, and the Source cannot update it.
|
|
88
|
+
|
|
89
|
+
The `build-agent` skill walks through choosing between these and building one.
|
|
90
|
+
|
|
91
|
+
## Where each thing is done
|
|
92
|
+
|
|
93
|
+
| Done by | Where |
|
|
94
|
+
|---|---|
|
|
95
|
+
| Making a product available to a Source; granting seats | Ekanos super admin, in Ekanos's admin |
|
|
96
|
+
| Building or updating an integration | A developer, with `ekanos validate` / `ekanos publish` |
|
|
97
|
+
| Agents provided for every team | A Source admin, with `ekanos agents` |
|
|
98
|
+
| Connecting an integration; turning on a provided agent; its triggers | Each team, in the app |
|