kushi-agents 4.8.1 → 4.8.2
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/package.json +1 -1
- package/plugin/instructions/customer-hint-discovery.instructions.md +4 -3
- package/plugin/instructions/email-bootstrap-discovery.instructions.md +1 -1
- package/plugin/instructions/meetings-bootstrap-discovery.instructions.md +1 -1
- package/plugin/instructions/sharepoint-bootstrap-discovery.instructions.md +1 -1
- package/plugin/instructions/teams-bootstrap-discovery.instructions.md +1 -1
- package/plugin/skills/bootstrap-project/SKILL.md +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kushi-agents",
|
|
3
|
-
"version": "4.8.
|
|
3
|
+
"version": "4.8.2",
|
|
4
4
|
"description": "Install Kushi — multi-source project evidence agent with snapshot+stream capture across Email, Teams, OneNote, Loop, SharePoint, Meetings, CRM, ADO. WorkIQ-only for M365 sources (Graph / m365_* FORBIDDEN as fallbacks; user-paste is first-class). Host-agnostic.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -44,7 +44,7 @@ For each source whose sweep runs:
|
|
|
44
44
|
|
|
45
45
|
1. **Append discovered IDs / URLs / paths to `<engagement-root>/<project>/integrations.yml#boundaries.<source>.<key>`** as plain strings (existing pull-* skills consume strings — do NOT change the array element type). Idempotent: deduplicate by exact-string equality.
|
|
46
46
|
|
|
47
|
-
2. **Write a sidecar discovery record to `<engagement-root>/<project>/Evidence
|
|
47
|
+
2. **Write a sidecar discovery record to `<engagement-root>/<project>/Evidence/<alias>/_discovery/<YYYY-MM-DD>_<source>_discovery.yml`** with the per-row metadata (`discovered_by`, `discovered_at`, `needs_review`, `query`, `request_id`, `confidence`). The sidecar lives **inside the contributor's alias folder** because discovery results are inherently per-identity (each contributor sees a different mailbox / chat / meeting set). Schema:
|
|
48
48
|
|
|
49
49
|
```yaml
|
|
50
50
|
source: email | teams | meetings | sharepoint
|
|
@@ -93,11 +93,12 @@ For each source whose sweep runs:
|
|
|
93
93
|
|
|
94
94
|
## Multi-contributor safety
|
|
95
95
|
|
|
96
|
-
When the boundary already has rows from another alias (or
|
|
96
|
+
When the boundary already has rows from another alias (or sibling `Evidence/<other-alias>/_discovery/` folders already have entries):
|
|
97
97
|
|
|
98
98
|
1. **Append-only** — the new alias's sweep adds rows that are not already present (dedupe by exact-string equality on the boundary value). Never remove or rewrite another alias's row.
|
|
99
|
-
2. **Sidecar
|
|
99
|
+
2. **Sidecar files are per-contributor-folder-per-source-per-date** — each contributor writes only into their own `Evidence/<alias>/_discovery/` folder. Filenames are NOT suffixed with `-<alias>` (folder already namespaces the owner). On the same day, contributors `ushak` and `stand` produce `Evidence/ushak/_discovery/2026-05-26_email_discovery.yml` and `Evidence/stand/_discovery/2026-05-26_email_discovery.yml` respectively — no collision possible. Bootstrap-status's Discovery Sweep Results table shows one row per source × alias.
|
|
100
100
|
3. **`Discovered by` column in bootstrap-status's per-source Context Artifact Status row** cites the most recent discovering alias. Preserve other aliases' rows in `## Contributors who have bootstrapped this project` per `multi-user-shared-files.instructions.md`.
|
|
101
|
+
4. **NEVER write to another contributor's `Evidence/<other-alias>/_discovery/` folder.** Reading other aliases' discovery sidecars (e.g. to merge already-confirmed candidates into the shared boundary) is allowed and expected; writing into them is forbidden.
|
|
101
102
|
|
|
102
103
|
## Rerun behavior
|
|
103
104
|
|
|
@@ -55,7 +55,7 @@ WorkIQ returns a markdown table. Parse rows where `folder path` is non-empty and
|
|
|
55
55
|
|
|
56
56
|
## Sidecar file shape
|
|
57
57
|
|
|
58
|
-
Written to `<engagement-root>/<project>/Evidence
|
|
58
|
+
Written to `<engagement-root>/<project>/Evidence/<alias>/_discovery/<YYYY-MM-DD>_email_discovery.yml` (per-contributor folder; no `-<alias>` filename suffix since the folder already namespaces the owner):
|
|
59
59
|
|
|
60
60
|
```yaml
|
|
61
61
|
source: email
|
|
@@ -60,7 +60,7 @@ This phrasing — **natural-language by subject + organizer + join URL request**
|
|
|
60
60
|
|
|
61
61
|
## Sidecar file shape
|
|
62
62
|
|
|
63
|
-
Written to `<engagement-root>/<project>/Evidence
|
|
63
|
+
Written to `<engagement-root>/<project>/Evidence/<alias>/_discovery/<YYYY-MM-DD>_meetings_discovery.yml` (per-contributor folder; no `-<alias>` filename suffix). Schema per `email-bootstrap-discovery.instructions.md` § Sidecar file shape, with `source: meetings`.
|
|
64
64
|
|
|
65
65
|
Additional field for meetings sidecar:
|
|
66
66
|
|
|
@@ -67,7 +67,7 @@ WorkIQ commonly punts on this query (see Empirical finding above). Apply this cl
|
|
|
67
67
|
|
|
68
68
|
## Sidecar file shape
|
|
69
69
|
|
|
70
|
-
Written to `<engagement-root>/<project>/Evidence
|
|
70
|
+
Written to `<engagement-root>/<project>/Evidence/<alias>/_discovery/<YYYY-MM-DD>_sharepoint_discovery.yml` (per-contributor folder; no `-<alias>` filename suffix). Schema per `email-bootstrap-discovery.instructions.md` § Sidecar file shape, with `source: sharepoint`.
|
|
71
71
|
|
|
72
72
|
```yaml
|
|
73
73
|
results:
|
|
@@ -87,7 +87,7 @@ WorkIQ returns the `chat ID` column populated as `N/A` (empirical, v4.8.1). The
|
|
|
87
87
|
|
|
88
88
|
## Sidecar file shape
|
|
89
89
|
|
|
90
|
-
Two sidecar files (one per query). Written to `<engagement-root>/<project>/Evidence
|
|
90
|
+
Two sidecar files (one per query). Written to `<engagement-root>/<project>/Evidence/<alias>/_discovery/<YYYY-MM-DD>_teams-chats_discovery.yml` and `<engagement-root>/<project>/Evidence/<alias>/_discovery/<YYYY-MM-DD>_teams-channels_discovery.yml` (per-contributor folder; no `-<alias>` filename suffix since the folder already namespaces the owner).
|
|
91
91
|
|
|
92
92
|
Schema is the same as `email-bootstrap-discovery.instructions.md` § Sidecar file shape, with `source: teams-chats` or `source: teams-channels`.
|
|
93
93
|
|
|
@@ -138,7 +138,7 @@ For each sweep:
|
|
|
138
138
|
3. Parse the response per the doctrine's parsing rules.
|
|
139
139
|
4. Cap at 10 candidates by recency (or per-doctrine ordering).
|
|
140
140
|
5. Append discovered values to `<project>/integrations.yml#boundaries.<source>.<key>` as plain strings (deduplicate by exact-string equality).
|
|
141
|
-
6. Write sidecar `<project>/Evidence
|
|
141
|
+
6. Write sidecar `<project>/Evidence/<alias>/_discovery/<YYYY-MM-DD>_<source>_discovery.yml` with per-row metadata (`discovered_by`, `discovered_at`, `needs_review: true`, `confidence`, `query`, `workiq_request_id`). The sidecar lives INSIDE the contributor's alias folder (discovery results are per-identity); filename is NOT suffixed with `-<alias>` since the folder already namespaces the owner.
|
|
142
142
|
7. If `> 10` candidates: append the remainder to `<project>/OPEN-QUESTIONS-DRAFT.md` under `## Discovery sweep — candidates over cap`.
|
|
143
143
|
8. If `0` candidates: write `last_status: unresolved` (NOT `blocked-config`) and append a one-line widen-hint suggestion to Open Questions.
|
|
144
144
|
9. If WorkIQ errors: write a `deferred-retry` marker per `deferred-retry-on-workiq-fail.instructions.md` and set `last_status: deferred`. Do NOT skip ahead to `blocked-config`.
|