ente-cli 0.4.76 → 0.4.78

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 CHANGED
@@ -107,8 +107,9 @@ ente entity rename "Lorey Georg" "Georg Lorey"
107
107
  ente task list --due today
108
108
  ente activity create --type note --title "Meeting notes" --entity "Alice" --space "Personal"
109
109
  ente activity get <activityId> --json # includes the body, nested agenda, messages/replies, entities, and attachments
110
- ente agenda create-point --meeting <meetingActivityId> --title "Decisions" --content="- Ship the smaller scope"
110
+ ente agenda create-point --activity <activityId> --title "Decisions" --content="- Ship the smaller scope"
111
111
  ente agenda link-task --point <agendaPointId> --task "#12"
112
+ # Agendas work on every activity type; --meeting remains an alias for --activity.
112
113
  ente activity message add <activityId> --content "Decision: ship the smaller scope first."
113
114
  ente activity content read <activityId> --json
114
115
  ente activity content edit <activityId> --expected-version 42 --operations-file edits.json --json
@@ -444,3 +445,5 @@ separate human-admin JWT surface and never serves as a fallback.
444
445
  Diagnostics is unavailable inside Ente-hosted chats, recordings and automations.
445
446
  Use the external operator command. Whole-history panel sharing does not grant
446
447
  access to diagnostics, and diagnostic reads do not append to chat history.
448
+
449
+ Identify your connection with `ente agent set-icon fish` (or `--reset`), then find its icon in `/agents`. Requires write scope and always targets your own bound agent.
package/dist/SKILL.md CHANGED
@@ -184,8 +184,9 @@ ente activity attachment upload <activityId> ./file.pdf [--name "Contract.pdf"]
184
184
  ente activity delete <activityId> [--json]
185
185
  ente activity restore <activityId> [--json]
186
186
 
187
- # Meeting agendas
188
- ente agenda create-point --meeting <meetingActivityId> --title "Decisions" [--content="…"] [--content-file ./decisions.md] [--parent <agendaPointId>] [--after <agendaPointId>] [--json]
187
+ # Activity agendas (all activity types)
188
+ # --meeting remains a compatibility alias for --activity.
189
+ ente agenda create-point --activity <activityId> --title "Decisions" [--content="…"] [--content-file ./decisions.md] [--parent <agendaPointId>] [--after <agendaPointId>] [--json]
189
190
  ente agenda link-task --point <agendaPointId> --task <activityId|#N> [--json]
190
191
 
191
192
  # Excalidraw Canvas HTML prototypes
@@ -614,3 +615,12 @@ No customer bodies, arbitrary account lookup, settings writes or mailbox retries
614
615
  Diagnostics is unavailable inside Ente-hosted chats, recordings and automations.
615
616
  Use the external operator command. Whole-history panel sharing does not grant
616
617
  access to diagnostics, and diagnostic reads do not append to chat history.
618
+
619
+
620
+ ### Identify this connection
621
+
622
+ Use `ente agent set-icon fish` to change only this credential’s own Ente agent
623
+ icon, then find it in `/agents`. Use `ente agent set-icon --reset` to restore the
624
+ default. Run `ente agent set-icon --help` for curated IDs. Write scope is required;
625
+ there is no agent-ID option. Connections shows last recorded external access,
626
+ which can have historical gaps and excludes hosted/scheduled activity.
package/dist/cli.mjs CHANGED
@@ -3800,7 +3800,7 @@ async function runCli(cli2, argv, context) {
3800
3800
  }
3801
3801
 
3802
3802
  // ente/version.ts
3803
- var VERSION = "0.4.76";
3803
+ var VERSION = "0.4.78";
3804
3804
 
3805
3805
  // ente/branding.ts
3806
3806
  var NPM_REGISTRY = "https://registry.npmjs.org";
@@ -4246,7 +4246,7 @@ var EnteClient = class _EnteClient {
4246
4246
  ...spaceId ? { spaceId } : {}
4247
4247
  });
4248
4248
  }
4249
- // --- meeting agendas ---------------------------------------------------
4249
+ // --- activity agendas ---------------------------------------------------
4250
4250
  createAgendaPoint(body) {
4251
4251
  return this.rest.post("/api/external/agenda-points", body);
4252
4252
  }
@@ -4285,6 +4285,9 @@ var EnteClient = class _EnteClient {
4285
4285
  getAuthContext() {
4286
4286
  return this.rest.get("/api/external/auth-context");
4287
4287
  }
4288
+ setAgentIcon(icon) {
4289
+ return this.rest.patch("/api/external/agent/icon", { icon });
4290
+ }
4288
4291
  getAgentConfiguration() {
4289
4292
  return this.rest.get("/api/external/agent");
4290
4293
  }
@@ -15226,6 +15229,72 @@ var RECORDINGS_COMMANDS = [
15226
15229
  RecordingBackupJoinCommand
15227
15230
  ];
15228
15231
 
15232
+ // ../packages/shared/src/agent-icon.ts
15233
+ var entityCustomIconIds = [
15234
+ "lightbulb",
15235
+ "star",
15236
+ "bookmark",
15237
+ "target",
15238
+ "flag",
15239
+ "brain",
15240
+ "book-open",
15241
+ "puzzle",
15242
+ "zap",
15243
+ "compass",
15244
+ "map",
15245
+ "wrench",
15246
+ "shield",
15247
+ "heart-handshake",
15248
+ "trophy",
15249
+ "globe-2",
15250
+ "network",
15251
+ "landmark",
15252
+ "leaf",
15253
+ "route",
15254
+ "binoculars",
15255
+ "gem",
15256
+ "crown",
15257
+ "key",
15258
+ "satellite",
15259
+ "sun"
15260
+ ];
15261
+ var activityCustomIconIds = [
15262
+ "fish",
15263
+ "bird",
15264
+ "rabbit",
15265
+ "turtle",
15266
+ "squirrel",
15267
+ "snail",
15268
+ "bug",
15269
+ "wand-sparkles",
15270
+ "drama",
15271
+ "music",
15272
+ "dice-5",
15273
+ "gift",
15274
+ "flame",
15275
+ "coffee",
15276
+ "party-popper",
15277
+ "rainbow",
15278
+ "umbrella",
15279
+ "anchor",
15280
+ "sailboat",
15281
+ "gamepad-2",
15282
+ "ghost",
15283
+ "bot",
15284
+ "cloud",
15285
+ "moon",
15286
+ "smile"
15287
+ ];
15288
+ var AGENT_ICON_IDS = [...entityCustomIconIds, ...activityCustomIconIds];
15289
+ function parseAgentIconInput(raw) {
15290
+ if (!raw || typeof raw !== "object" || Array.isArray(raw)) throw new Error("Expected { icon: curated icon ID or null }");
15291
+ const input = raw;
15292
+ if (Object.keys(input).length !== 1 || !("icon" in input) || input.icon !== null && !AGENT_ICON_IDS.some((icon) => icon === input.icon)) {
15293
+ throw new Error("Expected only icon: a curated icon ID or null; no agent ID is accepted");
15294
+ }
15295
+ return { icon: input.icon };
15296
+ }
15297
+
15229
15298
  // ente/commands/agent.ts
15230
15299
  import { readFileSync as readFileSync11 } from "node:fs";
15231
15300
  import { randomUUID } from "node:crypto";
@@ -15594,6 +15663,18 @@ var AgentNew = class extends ClientCommand {
15594
15663
  throw new Error("This connection has no bound agent. Reconnect it in /agents.");
15595
15664
  }
15596
15665
  };
15666
+ var AgentSetIcon = class extends ClientCommand {
15667
+ static paths = [["agent", "set-icon"]];
15668
+ static usage = Command.Usage({ category: "Agent", description: "Change your own agent icon (curated ID, or --reset)", details: `Icons: ${AGENT_ICON_IDS.join(", ")}` });
15669
+ icon = options_exports.String({ required: false });
15670
+ reset = options_exports.Boolean("--reset", false);
15671
+ async run() {
15672
+ if (this.reset === (this.icon !== void 0)) throw new Error("Provide one icon ID or --reset.");
15673
+ const { icon } = parseAgentIconInput({ icon: this.reset ? null : this.icon });
15674
+ const result = await this.client().setAgentIcon(icon);
15675
+ this.emitText(result, () => `Agent ${result.data.agentId}: ${result.data.icon ?? "default icon"}`);
15676
+ }
15677
+ };
15597
15678
  var AgentConfigShow = class extends ClientCommand {
15598
15679
  static paths = [["agent", "config", "show"]];
15599
15680
  static usage = Command.Usage({
@@ -15650,6 +15731,7 @@ var AGENT_COMMANDS = [
15650
15731
  AgentSend,
15651
15732
  AgentNew,
15652
15733
  AgentAnalyze,
15734
+ AgentSetIcon,
15653
15735
  AgentConfigShow,
15654
15736
  AgentConfigSetPrompt,
15655
15737
  AgentSchedulesConfigure
@@ -15660,12 +15742,12 @@ import { readFileSync as readFileSync12 } from "node:fs";
15660
15742
  var AgendaPointCreate = class extends ClientCommand {
15661
15743
  static paths = [["agenda", "create-point"]];
15662
15744
  static usage = Command.Usage({
15663
- category: "Meeting agenda",
15745
+ category: "Activity agenda",
15664
15746
  description: "Create a titled agenda point with optional markdown content"
15665
15747
  });
15666
- meeting = options_exports.String("--meeting", {
15748
+ activity = options_exports.String("--activity,--meeting", {
15667
15749
  required: true,
15668
- description: "Meeting activity ID"
15750
+ description: "Activity ID of any type (--meeting is a compatibility alias)"
15669
15751
  });
15670
15752
  title = options_exports.String("--title", {
15671
15753
  required: true,
@@ -15688,7 +15770,7 @@ var AgendaPointCreate = class extends ClientCommand {
15688
15770
  throw new Error("Use either --content or --content-file, not both.");
15689
15771
  const contentMarkdown = this.content !== void 0 ? this.content : this.contentFile !== void 0 ? readFileSync12(this.contentFile, "utf8") : void 0;
15690
15772
  const result = await this.client().createAgendaPoint({
15691
- meetingActivityId: this.meeting,
15773
+ meetingActivityId: this.activity,
15692
15774
  title: this.title,
15693
15775
  contentMarkdown,
15694
15776
  parentPointId: this.parent,
@@ -15701,7 +15783,7 @@ var AgendaPointCreate = class extends ClientCommand {
15701
15783
  var agendaPointDocumentId = (pointId) => `agenda-point:${pointId}`;
15702
15784
  var AgendaHtmlList = class extends ProfileCommand {
15703
15785
  static paths = [["agenda", "html", "list"]];
15704
- static usage = Command.Usage({ category: "Meeting agenda", description: "List interactive HTML blocks in an agenda point" });
15786
+ static usage = Command.Usage({ category: "Activity agenda", description: "List interactive HTML blocks in an agenda point" });
15705
15787
  pointId = options_exports.String();
15706
15788
  async run() {
15707
15789
  const caller = await resolveCaller();
@@ -15712,7 +15794,7 @@ var AgendaHtmlList = class extends ProfileCommand {
15712
15794
  };
15713
15795
  var AgendaHtmlGet = class extends ProfileCommand {
15714
15796
  static paths = [["agenda", "html", "get"]];
15715
- static usage = Command.Usage({ category: "Meeting agenda", description: "Read one agenda-point HTML block including source" });
15797
+ static usage = Command.Usage({ category: "Activity agenda", description: "Read one agenda-point HTML block including source" });
15716
15798
  pointId = options_exports.String();
15717
15799
  blockId = options_exports.String();
15718
15800
  async run() {
@@ -15725,7 +15807,7 @@ var AgendaHtmlGet = class extends ProfileCommand {
15725
15807
  };
15726
15808
  var AgendaHtmlAdd = class extends ProfileCommand {
15727
15809
  static paths = [["agenda", "html", "add"]];
15728
- static usage = Command.Usage({ category: "Meeting agenda", description: "Append an interactive HTML block to an agenda point" });
15810
+ static usage = Command.Usage({ category: "Activity agenda", description: "Append an interactive HTML block to an agenda point" });
15729
15811
  pointId = options_exports.String();
15730
15812
  htmlFile = options_exports.String({ required: false, name: "htmlFile" });
15731
15813
  htmlFileFlag = options_exports.String("--html-file", { description: "Read HTML from a file; use - or omit for stdin" });
@@ -15750,7 +15832,7 @@ var AgendaHtmlAdd = class extends ProfileCommand {
15750
15832
  };
15751
15833
  var AgendaHtmlUpdate = class extends ProfileCommand {
15752
15834
  static paths = [["agenda", "html", "update"]];
15753
- static usage = Command.Usage({ category: "Meeting agenda", description: "Surgically update one agenda-point HTML block" });
15835
+ static usage = Command.Usage({ category: "Activity agenda", description: "Surgically update one agenda-point HTML block" });
15754
15836
  pointId = options_exports.String();
15755
15837
  blockId = options_exports.String();
15756
15838
  htmlFile = options_exports.String("--html-file", { description: "Read HTML from a file; use - for stdin" });
@@ -16143,12 +16225,12 @@ Creating activities:
16143
16225
  --entity "Erik Stahl" --entity "Preclinics" --space "Preclinics" \\
16144
16226
  --content "Discussed QM system. Follow up on export feature."
16145
16227
 
16146
- Meeting agendas:
16228
+ Activity agendas (all activity types; --meeting remains an alias):
16147
16229
  ente activity create --type meeting --title "QM system review" ...
16148
- ente agenda create-point --meeting <meeting-id> --title "Rollout" --content="- Decision ..."
16230
+ ente agenda create-point --activity <activity-id> --title "Rollout" --content="- Decision ..."
16149
16231
  ente agenda link-task --point <point-id> --task "#12"
16150
16232
 
16151
- Prefer agenda points for structured meeting content when they add useful
16233
+ Prefer agenda points for structured activity content when they add useful
16152
16234
  topic structure. Link meeting-derived tasks to the point they came from.
16153
16235
 
16154
16236
  Golden rule:
@@ -16223,7 +16305,7 @@ Tips:
16223
16305
  1. ente search "person name" # find entity, check pins
16224
16306
  2. ente activity create --type meeting --title "..." \\
16225
16307
  --entity "person" --entity "their org" --space "..."
16226
- 3. ente agenda create-point --meeting <meeting-id> --title "..." --content="..."
16308
+ 3. ente agenda create-point --activity <activity-id> --title "..." --content="..."
16227
16309
  4. If follow-ups: create each task, then:
16228
16310
  ente agenda link-task --point <point-id> --task <task-id|#N>
16229
16311