@meffecta/agent 1.0.11 → 1.0.12
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/deployment.env.example +1 -1
- package/engine.json +2 -2
- package/lib/commands.js +5 -0
- package/lib/create-job.js +1 -1
- package/lib/integrations.js +2 -2
- package/lib/resources.js +3 -0
- package/package.json +1 -1
- package/scripts/lib/deployment.sh +1 -1
- package/scripts/setup-infrastructure.sh +7 -0
package/deployment.env.example
CHANGED
|
@@ -32,7 +32,7 @@ REGION=europe-west1
|
|
|
32
32
|
# several Google accounts and want this deployment pinned to one.
|
|
33
33
|
# ACCOUNT=you@example.com
|
|
34
34
|
|
|
35
|
-
# Optional. The
|
|
35
|
+
# Optional. The zone every job's `cron:` is read in. Defaults to UTC.
|
|
36
36
|
# TIMEZONE=Europe/Stockholm
|
|
37
37
|
|
|
38
38
|
# Optional. The runtime shape asserted on every rollout, so the deployed service
|
package/engine.json
CHANGED
package/lib/commands.js
CHANGED
|
@@ -217,6 +217,11 @@ async function status() {
|
|
|
217
217
|
}
|
|
218
218
|
console.log(` revision ${svc.status?.latestReadyRevisionName ?? "?"}`);
|
|
219
219
|
console.log(` image ${container.image}`);
|
|
220
|
+
// The address you paste into someone else's console. GA4, Search Console and Google Ads
|
|
221
|
+
// authenticate as this rather than with a token, so granting the agent a property means
|
|
222
|
+
// inviting this email — and it is read from the service rather than assembled from the
|
|
223
|
+
// project name, so it is what the agent actually runs as.
|
|
224
|
+
console.log(` acts as ${tpl.spec.serviceAccountName ?? "(the project's default compute account)"}`);
|
|
220
225
|
console.log(
|
|
221
226
|
` shape min ${ann["autoscaling.knative.dev/minScale"] ?? "0"}, max ${
|
|
222
227
|
ann["autoscaling.knative.dev/maxScale"] ?? "?"
|
package/lib/create-job.js
CHANGED
|
@@ -230,7 +230,7 @@ export async function createJob(args) {
|
|
|
230
230
|
.map((f) => f.replace(/\.md$/, ""))
|
|
231
231
|
: [];
|
|
232
232
|
|
|
233
|
-
const timezone = d.TIMEZONE ?? "
|
|
233
|
+
const timezone = d.TIMEZONE ?? "UTC";
|
|
234
234
|
console.error(`Asking ${d.SERVICE} to write it — it can see your jobs, worlds and skills. This takes a minute.`);
|
|
235
235
|
const params = new URLSearchParams({ prompt: buildPrompt(description, { timezone, existing }) });
|
|
236
236
|
if (flags.model) {
|
package/lib/integrations.js
CHANGED
|
@@ -63,8 +63,8 @@ const INTEGRATIONS = {
|
|
|
63
63
|
gives: "query-google-marketing — traffic, the queries that bring it, campaign spend",
|
|
64
64
|
needs: [
|
|
65
65
|
"No token at all: these authenticate as the runtime service account, which means",
|
|
66
|
-
"inviting it rather than minting anything. `meffecta-agent status` prints
|
|
67
|
-
"
|
|
66
|
+
"inviting it rather than minting anything. `meffecta-agent status` prints the exact",
|
|
67
|
+
"address to invite, on its `acts as` line.",
|
|
68
68
|
"",
|
|
69
69
|
"Invite it as a Viewer on each property you want read: the GA4 property (Admin →",
|
|
70
70
|
"Property access management), the Search Console property (Settings → Users and",
|
package/lib/resources.js
CHANGED
|
@@ -210,6 +210,9 @@ export async function resources() {
|
|
|
210
210
|
const note = explain[name] ?? `${display || "no description"} — not part of the agent set-up`;
|
|
211
211
|
row(email === runtimeSa ? "✔" : explain[name] ? "✔" : "·", name, note, saWidth);
|
|
212
212
|
}
|
|
213
|
+
console.log(` ${runtimeSa}`);
|
|
214
|
+
console.log(" is the address to invite on a GA4 property, Search Console or Google Ads —");
|
|
215
|
+
console.log(" those grant access to a login rather than to a token.");
|
|
213
216
|
const held = (roles ?? "").split("\n").filter(Boolean);
|
|
214
217
|
if (held.length) {
|
|
215
218
|
console.log(` agent-runtime may, across the whole project: ${held.map((r) => leaf(r)).join(", ")}`);
|
package/package.json
CHANGED
|
@@ -70,7 +70,7 @@ resolve_deployment() {
|
|
|
70
70
|
# configure by editing a committed file.
|
|
71
71
|
GHCR_IMAGE="${GHCR_IMAGE:-ghcr.io/meffecta/agent}"
|
|
72
72
|
GHCR_PATH="${GHCR_IMAGE#*/}" # ghcr.io/meffecta/agent → meffecta/agent
|
|
73
|
-
TIMEZONE="${TIMEZONE:-
|
|
73
|
+
TIMEZONE="${TIMEZONE:-UTC}"
|
|
74
74
|
|
|
75
75
|
# The runtime shape, asserted by deploy.sh on every rollout so the deployed service
|
|
76
76
|
# matches this file rather than whatever was last done by hand in the console. Defaults
|
|
@@ -314,6 +314,13 @@ echo " the agent acts as, a bucket for its memory, a write-once bucket for the
|
|
|
314
314
|
echo " trail, the queue that carries work back to the service, and the service itself —"
|
|
315
315
|
echo " empty, waiting for an engine."
|
|
316
316
|
echo ""
|
|
317
|
+
# The one address an operator has to type into someone else's console. Google Analytics,
|
|
318
|
+
# Search Console and Google Ads grant access to a login rather than to a token, so this is
|
|
319
|
+
# what gets invited. Printed on every run, not only the one that created it.
|
|
320
|
+
echo " The agent acts as:"
|
|
321
|
+
echo " ${RUNTIME_SA}"
|
|
322
|
+
echo " Invite that on a GA4 property, Search Console or Google Ads to let it read them."
|
|
323
|
+
echo ""
|
|
317
324
|
echo " Next, from this directory:"
|
|
318
325
|
echo ""
|
|
319
326
|
echo " $(cmd set-env) GIT_REPO_URL=https://github.com/<owner>/<content-repo>.git"
|