@joe-broadhead/opencode-gws 0.0.3 → 0.0.4

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/CHANGELOG.md CHANGED
@@ -2,6 +2,17 @@
2
2
 
3
3
  All notable changes to this project are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and versions follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
4
4
 
5
+ ## [0.0.4] - 2026-11-04
6
+
7
+ ### Added
8
+
9
+ - Jelly shows the plugin's one-line summary ("Gmail, Calendar, Drive, Docs and Sheets.") and its icon, a neutral envelope over a page (`assets/icon.svg`, now in the package). A Jelly release that does not know these two fields refuses the declaration, so this version needs a Jelly that accepts them.
10
+ - In Jelly, a web tab can sign in to Google Workspace through Jelly's sign-in relay: the `google` sign-in declares `relay` with the `redirectUri` and `callbackPort` fields the plugin already takes. Nothing changes without Jelly.
11
+
12
+ ### Fixed
13
+
14
+ - Planning `gmail.users.drafts.send` for a draft that cannot be read, or that names no recipient, now sets `recipientsUnknown` in the preview ("the draft could not be read or names no recipient"), so a recipient rule refuses it with `RECIPIENTS_UNKNOWN`. Before, such a plan could show no recipients and no reason.
15
+
5
16
  ## [0.0.3] - 2026-11-04
6
17
 
7
18
  ### Fixed
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="48" height="48"><rect width="48" height="48" rx="12" fill="#52606D"/><path d="M21 9h15a2 2 0 0 1 2 2v17a2 2 0 0 1-2 2H21a2 2 0 0 1-2-2V11a2 2 0 0 1 2-2z" fill="#CBD2D9"/><path d="M23.5 14h10M23.5 18.5h10" fill="none" stroke="#52606D" stroke-width="2.4" stroke-linecap="round"/><rect x="9" y="20" width="22" height="17" rx="2.5" fill="#FFFFFF"/><path d="M12 23.5l8 6 8-6" fill="none" stroke="#52606D" stroke-width="2.6" stroke-linecap="round" stroke-linejoin="round"/></svg>
package/dist/index.js CHANGED
@@ -6576,7 +6576,7 @@ var ErrorCode = {
6576
6576
  next: "Do not work around it. If the message says to use gws_plan, plan the change; otherwise tell the user, who can change the plugin policy."
6577
6577
  },
6578
6578
  RECIPIENTS_UNKNOWN: {
6579
- meaning: "A policy rule limits recipients, and the plugin could not tell who this send or share reaches: a raw message without readable To, Cc or Bcc headers, a draft, message or event it could not read, or a method whose recipients it does not know. Nothing ran.",
6579
+ meaning: "A policy rule limits recipients, and the plugin could not tell who this send or share reaches: a raw message without readable To, Cc or Bcc headers, a draft, message or event it could not read, a draft that names no recipient, or a method whose recipients it does not know. Nothing ran.",
6580
6580
  next: "Name the recipients in the request (to, cc and bcc, or the To, Cc and Bcc headers of raw), or tell the user the policy rule refuses this method."
6581
6581
  },
6582
6582
  ACCOUNT_DOMAIN_UNKNOWN: {
@@ -7910,7 +7910,7 @@ function checkHost(version2, range, allowUntested) {
7910
7910
  }
7911
7911
 
7912
7912
  // src/domain/version.ts
7913
- var PLUGIN_VERSION = "0.0.3";
7913
+ var PLUGIN_VERSION = "0.0.4";
7914
7914
  var PLUGIN_ID = "google-workspace.gws";
7915
7915
 
7916
7916
  // src/host/agents.ts
@@ -11185,6 +11185,7 @@ var draftsSend = (request) => {
11185
11185
  operation: "gmail.users.drafts.get",
11186
11186
  params: { userId, id, format: "metadata", fields: "message/payload/headers" },
11187
11187
  what: "the draft",
11188
+ none: "the draft could not be read or names no recipient",
11188
11189
  extract(data) {
11189
11190
  const found = headers(record2(data)["message"]);
11190
11191
  return found ? setOf([...found.get("to") ?? [], ...found.get("cc") ?? [], ...found.get("bcc") ?? []]) : void 0;
@@ -11367,13 +11368,15 @@ function recipientPlan(operation, category, request) {
11367
11368
  }
11368
11369
  return { known: scanned, lookups: [] };
11369
11370
  }
11370
- function withLookup(recipients, found, what) {
11371
- if (!found) return { ...recipients, unknown: recipients.unknown ?? `${what} could not be read` };
11372
- return {
11371
+ function withLookup(recipients, found, lookup) {
11372
+ if (!found) return { ...recipients, unknown: recipients.unknown ?? `${lookup.what} could not be read` };
11373
+ const merged = {
11373
11374
  ...recipients,
11374
11375
  addresses: [.../* @__PURE__ */ new Set([...recipients.addresses, ...found.addresses])],
11375
11376
  domains: [.../* @__PURE__ */ new Set([...recipients.domains, ...found.domains])]
11376
11377
  };
11378
+ if (lookup.none && merged.addresses.length === 0 && merged.domains.length === 0) merged.unknown ??= lookup.none;
11379
+ return merged;
11377
11380
  }
11378
11381
  function recipientLabels(recipients) {
11379
11382
  return [...recipients.addresses, ...recipients.domains.map((domain) => `*@${domain}`)];
@@ -12220,7 +12223,7 @@ var Operations = class {
12220
12223
  let recipients = plan2.known;
12221
12224
  if (plan2.lookups.length > 0) {
12222
12225
  const self = plan2.needsSelf ? await this.ownAddress(request.account, entry.service, ctx) : void 0;
12223
- for (const lookup of plan2.lookups) recipients = withLookup(recipients, await this.lookup(lookup, request.account, ctx, self), lookup.what);
12226
+ for (const lookup of plan2.lookups) recipients = withLookup(recipients, await this.lookup(lookup, request.account, ctx, self), lookup);
12224
12227
  }
12225
12228
  const configured = this.runtime.config.accounts[request.account]?.domains;
12226
12229
  const reaches = recipients.addresses.length > 0 || recipients.domains.length > 0 || recipients.unknown !== void 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@joe-broadhead/opencode-gws",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "description": "Unofficial OpenCode plugin for Google Workspace (gws CLI)",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -26,6 +26,7 @@
26
26
  },
27
27
  "files": [
28
28
  "dist",
29
+ "assets/icon.svg",
29
30
  "skills",
30
31
  "manifest/generated.json",
31
32
  "views/gmail-thread.html",
@@ -51,10 +52,10 @@
51
52
  "docs:coverage": "node scripts/generate-docs.mjs"
52
53
  },
53
54
  "optionalDependencies": {
54
- "@joe-broadhead/opencode-gws-bin-darwin-arm64": "0.0.3",
55
- "@joe-broadhead/opencode-gws-bin-darwin-x64": "0.0.3",
56
- "@joe-broadhead/opencode-gws-bin-linux-arm64-gnu": "0.0.3",
57
- "@joe-broadhead/opencode-gws-bin-linux-x64-gnu": "0.0.3"
55
+ "@joe-broadhead/opencode-gws-bin-darwin-arm64": "0.0.4",
56
+ "@joe-broadhead/opencode-gws-bin-darwin-x64": "0.0.4",
57
+ "@joe-broadhead/opencode-gws-bin-linux-arm64-gnu": "0.0.4",
58
+ "@joe-broadhead/opencode-gws-bin-linux-x64-gnu": "0.0.4"
58
59
  },
59
60
  "devDependencies": {
60
61
  "@babel/core": "7.29.7",
@@ -76,6 +77,8 @@
76
77
  },
77
78
  "jelly": {
78
79
  "title": "Google Workspace",
80
+ "summary": "Gmail, Calendar, Drive, Docs and Sheets.",
81
+ "icon": "assets/icon.svg",
79
82
  "tools": [
80
83
  {
81
84
  "name": "gws.status",
@@ -169,7 +172,11 @@
169
172
  {
170
173
  "id": "google",
171
174
  "label": "Google Workspace",
172
- "integration": "gws-*"
175
+ "integration": "gws-*",
176
+ "relay": {
177
+ "redirectField": "redirectUri",
178
+ "portField": "callbackPort"
179
+ }
173
180
  }
174
181
  ],
175
182
  "contributes": {