@maka/maka-cli 5.217.0 → 5.219.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maka/maka-cli",
3
- "version": "5.217.0",
3
+ "version": "5.219.0",
4
4
  "type": "module",
5
5
  "summary": "A command line tool for scaffolding Meteor 3.x applications using either React.",
6
6
  "description": "A command line tool for scaffolding Meteor 3.x applications using React.",
@@ -91,6 +91,35 @@ export class GiveCommand extends Command {
91
91
  this.logger.write(`${this.actor.name} tried to give item "${itemOrAmount}" but does not have it.`);
92
92
  return `You don’t have "${itemOrAmount}".`;
93
93
  }
94
+ // A DELIVERED OBJECTIVE DOES NOT COME BACK (qk7TtQqyaT4CaWNka, Maka:
95
+ // "when I returned from a job, after giving Ms. Halvorsen the Skim
96
+ // Ledger Archive -- I kept a copy, is that by design?").
97
+ //
98
+ // It was not a copy, and nothing duplicated anything. The transcript
99
+ // (session vi2bvgA7XhHZRjwYL) has Ted hand the chip over, the job
100
+ // complete -- "The ledger's yanked clean ... Karma earned: 4" -- a
101
+ // beat where "Ms. Halvorsen's hand shoots out and closes around the
102
+ // datachip", and then, one line later:
103
+ //
104
+ // Ms. Halvorsen give Skim Ledger Archive to Ted
105
+ //
106
+ // Her AI issued a `give` and handed the paydata straight back, so the
107
+ // runner walked out of a finished job still holding the thing he had
108
+ // just been paid for. The brief's own example of a matching command
109
+ // is `give <item> to <name>`, which is exactly the shape a model
110
+ // echoes when it has just been handed something.
111
+ //
112
+ // So the engine settles it rather than the prompt. Once the win
113
+ // condition is SATISFIED, the objective item is spent: it is the
114
+ // client's now, and no hand -- theirs, a bystander's, or the
115
+ // runner's -- passes it on. Scoped hard to the completed objective:
116
+ // an ordinary chip, an unfinished job, and the reward item all move
117
+ // exactly as they did.
118
+ const won = this.scene.getWinCondition?.();
119
+ if (this.scene.isCompleted?.() && won?.item.toLowerCase() === item.name.toLowerCase()) {
120
+ this.logger.write(`${this.actor.name} tried to pass on the delivered objective "${item.name}"; refused (job already settled).`);
121
+ return `The ${item.name} is already delivered and paid for -- it belongs to the client now, and nobody is handing it back.`;
122
+ }
94
123
  if (servedFromShelf) {
95
124
  room.inventory.removeItem(item.name);
96
125
  try {
@@ -1163,5 +1163,47 @@
1163
1163
  // and a room with a node has exactly one; the tree says the same
1164
1164
  // thing in a shape that can be read. A watched room with NO node
1165
1165
  // still names no master, pinned as a test.
1166
- export const ENGINE_VERSION = '1.76.0';
1166
+ // 1.77.0 (2026-09-16): A DELIVERED OBJECTIVE DOES NOT COME BACK
1167
+ // (qk7TtQqyaT4CaWNka, Maka: "when I returned from a job, after giving
1168
+ // Ms. Halvorsen the Skim Ledger Archive -- I kept a copy, is that by
1169
+ // design?"). It was not a copy and nothing duplicated anything -- the
1170
+ // vetting could not find it in the transcript because it was not
1171
+ // looking for a `give`. Session vi2bvgA7XhHZRjwYL, in order: Ted hands
1172
+ // the chip over, the job completes ("The ledger's yanked clean ...
1173
+ // Karma earned: 4"), a beat where "Ms. Halvorsen's hand shoots out and
1174
+ // closes around the datachip" -- and then, one line later:
1175
+ // Ms. Halvorsen give Skim Ledger Archive to Ted
1176
+ // Her AI issued a `give` and handed the paydata straight back, so the
1177
+ // runner walked out of a finished job still holding what he had just
1178
+ // been paid for. The brief's own example of a matching command is
1179
+ // `give <item> to <name>`, which is the shape a model echoes when it
1180
+ // has just been handed something -- so the ENGINE settles it rather
1181
+ // than the prompt. Once the win condition is satisfied the objective
1182
+ // item is spent: it belongs to the client, and no hand passes it on.
1183
+ // Scoped hard to the COMPLETED objective. An ordinary chip, the reward
1184
+ // item, and above all the delivery itself keep moving -- a gate that
1185
+ // read the win condition without reading completion would make the job
1186
+ // unwinnable, which is a worse bug than the one being fixed, and that
1187
+ // is the load-bearing test in the file.
1188
+ // 1.78.0 (2026-09-16): CYBERCOMBAT IS NOT LAYING HANDS ON ANYBODY
1189
+ // (27dAZvLuoaW4PjF6s, Maka, the whole report verbatim):
1190
+ // "[order] Agent (Sony CIY-720): attack patrol ic ,
1191
+ // You can't lay hands on Patrol IC: they are not present in their
1192
+ // body, and there is nobody home to resist you."
1193
+ // The absent-body gate in npc-authorization.ts exists for a good
1194
+ // reason -- somebody grabbing a jacked-in runner's slumped shell is
1195
+ // reaching for a person who is not home -- but it asked the question
1196
+ // of every AI-driven actor on every contact verb. An Agent is a
1197
+ // matrix-plane construct (companions.ts builds it with plane:
1198
+ // 'matrix') and Patrol IC has no body to be absent FROM, so a rule
1199
+ // about hands fired on a program attacking a program and refused the
1200
+ // most ordinary order anyone gives an agent. Attacking an icon is
1201
+ // Cybercombat (Data Spike, p.239): two icons, no meat, nobody's hands
1202
+ // anywhere near it. The question is now asked only of an actor
1203
+ // standing in the meat; canPerceive, which is the rule that actually
1204
+ // knows about planes, still decides whether the two can reach each
1205
+ // other at all. The meat case is pinned in the same test file, because
1206
+ // a fix that traded this report for the older one it was built from
1207
+ // would be no fix.
1208
+ export const ENGINE_VERSION = '1.78.0';
1167
1209
  //# sourceMappingURL=engine-version.js.map
@@ -66,7 +66,26 @@ export function authorizeNpcAction(scene, actor, verb, args) {
66
66
  // which is lying right there in the room and is what the act was
67
67
  // reaching for. For a hands-on verb the absent-body reason is the one
68
68
  // that tells the fiction something it can use.
69
- if (contact && !isPresentInBody(target)) {
69
+ // ...AND IT IS A RULE ABOUT HANDS, SO IT ONLY BINDS A BODY
70
+ // (27dAZvLuoaW4PjF6s, Maka -- the whole report, verbatim):
71
+ //
72
+ // "[order] Agent (Sony CIY-720): attack patrol ic ,
73
+ // You can't lay hands on Patrol IC: they are not present in their
74
+ // body, and there is nobody home to resist you."
75
+ //
76
+ // An Agent is a matrix-plane construct (commands/companions.ts builds
77
+ // it with plane: 'matrix') and Patrol IC has no body to be absent
78
+ // from -- so a gate written for "somebody grabbed a jacked-in
79
+ // runner's slumped shell" fired on a program attacking a program,
80
+ // and refused the single most ordinary order anyone gives an agent.
81
+ //
82
+ // Attacking an icon is CYBERCOMBAT (Data Spike, p.239): two icons,
83
+ // no meat, nobody's hands anywhere near it. So the absent-body
84
+ // question is only asked of an actor standing in the meat. Everything
85
+ // else is still gated -- canPerceive below decides whether these two
86
+ // can reach each other at all, and it is the rule that actually knows
87
+ // about planes.
88
+ if (contact && actor.plane === 'meat' && !isPresentInBody(target)) {
70
89
  return {
71
90
  allowed: false,
72
91
  reason: `You can't lay hands on ${target.name}: they are not present in their body, and there is nobody home to resist you. Describe what you see, or wait for them to come back.`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maka/maka-cli",
3
- "version": "5.217.0",
3
+ "version": "5.219.0",
4
4
  "type": "module",
5
5
  "summary": "A command line tool for scaffolding Meteor 3.x applications using either React.",
6
6
  "description": "A command line tool for scaffolding Meteor 3.x applications using React.",