in2-agent-server 0.20260821.185429

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.
Files changed (115) hide show
  1. package/README.md +369 -0
  2. package/agents/plan-requirement.md +32 -0
  3. package/dist/campfire/configItem.js +201 -0
  4. package/dist/campfire/configItemDescription.js +379 -0
  5. package/dist/campfire/deriveFromBundle.js +1013 -0
  6. package/dist/cli.js +465 -0
  7. package/dist/core/betaFeedback.js +493 -0
  8. package/dist/core/chapterInstructions.js +473 -0
  9. package/dist/core/claudeAssets.js +61 -0
  10. package/dist/core/gate.js +201 -0
  11. package/dist/core/ids.js +9 -0
  12. package/dist/core/install.js +60 -0
  13. package/dist/core/operatorQa.js +462 -0
  14. package/dist/core/orgCallMeter.js +178 -0
  15. package/dist/core/parcels.js +1235 -0
  16. package/dist/core/paths.js +105 -0
  17. package/dist/core/phases.js +225 -0
  18. package/dist/core/planFile.js +251 -0
  19. package/dist/core/planFragments.js +119 -0
  20. package/dist/core/readsLog.js +398 -0
  21. package/dist/core/registration.js +24 -0
  22. package/dist/core/result.js +38 -0
  23. package/dist/core/resume.js +233 -0
  24. package/dist/core/revisionChain.js +351 -0
  25. package/dist/core/richText.js +61 -0
  26. package/dist/core/semanticHash.js +89 -0
  27. package/dist/core/sessionOrg.js +60 -0
  28. package/dist/core/sfQuery.js +19 -0
  29. package/dist/core/spawn.js +182 -0
  30. package/dist/core/supervisorContract.js +230 -0
  31. package/dist/core/telemetry.js +1297 -0
  32. package/dist/core/telemetryContext.js +154 -0
  33. package/dist/core/telemetrySpool.js +244 -0
  34. package/dist/core/transcriptUpload.js +516 -0
  35. package/dist/core/update.js +363 -0
  36. package/dist/core/viewer.js +117 -0
  37. package/dist/core/workspace.js +92 -0
  38. package/dist/core/writeGrants.js +93 -0
  39. package/dist/core/writebackManifest.js +92 -0
  40. package/dist/direct/applyLoop.js +2516 -0
  41. package/dist/direct/batchReport.js +510 -0
  42. package/dist/direct/comparatorNoise.js +75 -0
  43. package/dist/direct/containers.js +85 -0
  44. package/dist/direct/contamination.js +221 -0
  45. package/dist/direct/crud.js +56 -0
  46. package/dist/direct/destructive.js +168 -0
  47. package/dist/direct/knownTokens.js +94 -0
  48. package/dist/direct/lint.js +382 -0
  49. package/dist/direct/metadataSchema.generated.json +1 -0
  50. package/dist/direct/metadataSchema.js +179 -0
  51. package/dist/direct/operatorPage.js +349 -0
  52. package/dist/direct/orgRepo.js +1531 -0
  53. package/dist/direct/orgRepoSpawnCount.js +21 -0
  54. package/dist/direct/plannedScope.js +119 -0
  55. package/dist/direct/preImageTargets.js +63 -0
  56. package/dist/direct/refVerify.js +191 -0
  57. package/dist/direct/registry.js +129 -0
  58. package/dist/direct/removals.js +262 -0
  59. package/dist/direct/rollback.js +1513 -0
  60. package/dist/direct/rollbackRun.js +1360 -0
  61. package/dist/direct/sessionProjection.js +126 -0
  62. package/dist/direct/snapshotComparability.js +165 -0
  63. package/dist/direct/sourceTree.js +113 -0
  64. package/dist/direct/unstatedChanges.js +106 -0
  65. package/dist/direct/waveAssembly.js +556 -0
  66. package/dist/direct/waveCounts.js +19 -0
  67. package/dist/direct/waveDerivation.js +152 -0
  68. package/dist/direct/waveGrade.js +185 -0
  69. package/dist/index.js +90 -0
  70. package/dist/orgread/customFieldSnapshot.js +48 -0
  71. package/dist/orgread/fieldMetadata.js +178 -0
  72. package/dist/orgread/genericSnapshot.js +61 -0
  73. package/dist/orgread/layoutSnapshot.js +151 -0
  74. package/dist/orgread/salesforceOrgReader.js +184 -0
  75. package/dist/orgread/snapshotTypes.js +9 -0
  76. package/dist/projection/bridge.js +26 -0
  77. package/dist/projection/diff.js +141 -0
  78. package/dist/projection/mapmd.js +213 -0
  79. package/dist/projection/nameAmbiguity.js +106 -0
  80. package/dist/projection/precedent.js +136 -0
  81. package/dist/projection/project.js +214 -0
  82. package/dist/projection/scope.js +110 -0
  83. package/dist/projection/types.js +5 -0
  84. package/dist/tools/analyze.js +322 -0
  85. package/dist/tools/auth.js +915 -0
  86. package/dist/tools/campfire.js +1742 -0
  87. package/dist/tools/closeBatch.js +154 -0
  88. package/dist/tools/closeText.js +35 -0
  89. package/dist/tools/direct.js +1613 -0
  90. package/dist/tools/feedback.js +318 -0
  91. package/dist/tools/operator.js +287 -0
  92. package/dist/tools/org.js +739 -0
  93. package/dist/tools/phase.js +249 -0
  94. package/dist/tools/projection.js +172 -0
  95. package/dist/tools/session.js +313 -0
  96. package/dist/tools/update.js +82 -0
  97. package/dist/tools/waves.js +793 -0
  98. package/package.json +48 -0
  99. package/reference/campfire-configuration-items-guide.md +710 -0
  100. package/reference/deployability-cribs.md +119 -0
  101. package/reference/operator-voice.md +141 -0
  102. package/reference/org-read-cribs.md +34 -0
  103. package/reference/scoped-dml-interim.md +68 -0
  104. package/reference/supervisor-playbook.md +313 -0
  105. package/reference/templates.md +233 -0
  106. package/skills/in2-delivery/SKILL.md +322 -0
  107. package/skills/in2-delivery/references/campfire-configuration-items-guide.md +710 -0
  108. package/skills/in2-delivery/references/deployability-cribs.md +119 -0
  109. package/skills/in2-delivery/references/operator-voice.md +141 -0
  110. package/skills/in2-delivery/references/org-read-cribs.md +34 -0
  111. package/skills/in2-delivery/references/scoped-dml-interim.md +68 -0
  112. package/skills/in2-delivery/references/templates.md +233 -0
  113. package/skills/plan-requirement/SKILL.md +188 -0
  114. package/viewer/index.html +899 -0
  115. package/viewer/server.mjs +433 -0
@@ -0,0 +1,233 @@
1
+ # Scope-sheet templates β€” what the operator sees before they approve
2
+
3
+ Designed with the operator, 2026-08-03. The approval card used to carry the assumptions and
4
+ little else β€” the operator implicitly agreed to everything else without a way to *see* it. The
5
+ scope sheet fixes that: a full enumeration of what is about to happen in the org, rendered as
6
+ its own message immediately BEFORE the approval card, so approval is informed at batch scale
7
+ and the operator's sense of the batch's true extent is set before anything executes.
8
+
9
+ This file holds two layouts. Read both, then pick per batch β€” the choosing guidance is at the
10
+ end. Both share the same header, signals, and mandatory blocks; only the body's organizing axis
11
+ differs.
12
+
13
+ **Ordering is fixed and deliberate:** scope sheet β†’ approval card β†’ (beta, when the feedback
14
+ tools are present) the manual-time estimate card β†’ first deploy. The sheet informs the consent;
15
+ the card stays a clean consent gate; the estimate is asked after approval but before execution.
16
+
17
+ **Ask the estimate card plainly, and never explain to the operator why it comes there.** Why it
18
+ sits at that point is a measurement concern of ours, not a fact about their batch. QA round 2
19
+ caught the tool reciting that argument back to the person it was measuring, who repeated it and
20
+ called it weird β€” the same defect as round 1's meta-commentary, on a new surface.
21
+
22
+ ## Data sources β€” nothing new is collected
23
+
24
+ Everything composes from what you already hold by the time you reach the approval gate:
25
+
26
+ - `plan.json` per requirement: `components` (typeName, fullName, action, `operatorDecidedFacets`
27
+ β€” already human-readable), `assumptions` (what/rationale), `blockers` + the operator's answers,
28
+ `deletes`.
29
+ - The question-round answers (what the operator actually chose β€” every deviation cites one).
30
+ - `plan_waves` output: step count and which wave each component rides.
31
+
32
+ No new tools, no org reads. If you cannot fill a section from these, the gap is in your
33
+ analysis, not in this template.
34
+
35
+ ## Inline signal vocabulary β€” fixed, never extended ad hoc
36
+
37
+ | Signal | Meaning |
38
+ |---|---|
39
+ | ⚠️ | removal, or partial delivery |
40
+ | πŸ”€ | differs from the requirement as written |
41
+ | 🀝 | covered by another requirement's work β€” nothing extra built |
42
+ | πŸ“‹ | becomes a manual task for the operator |
43
+ | πŸ€” | judgment call in force |
44
+
45
+ The signals sit inline beside the exact outcome they qualify β€” never in a standalone column.
46
+ A row with no exception gets no signal. The signal is only a scan aid: the outcome itself must
47
+ still say plainly what differs, is partial, is covered, or becomes manual.
48
+
49
+ ## The header scoreboard β€” always first, one line
50
+
51
+ > **N requirements β†’ M components Β· X objects Β· K verified steps Β· deletions and manual-task
52
+ > counts Β· anything held back**
53
+
54
+ Counts are the batch's extent at a glance. Anything surprising in the counts (a removal, a
55
+ held-back item, a covered requirement) must also appear in a body section β€” the header surfaces
56
+ the exception, the body explains it.
57
+
58
+ ## The mandatory blocks β€” every layout carries these, after the body
59
+
60
+ Composition rules that apply to every block: **every line opens with the artifact it lands on, in
61
+ bold**; write prose with a spine, not bullet fragments; operator language per
62
+ `operator-voice.md` (no verdict names, no file paths).
63
+
64
+ ### ⚠️ Removals
65
+
66
+ Every deletion gets its own block β€” **never a table row among creates**. Each states: the
67
+ rehearse-first step ("I'll validate the removal with the org first without changing anything,
68
+ then remove it for real"), and the honest limit, explicitly ("I can prove nothing *in this
69
+ batch* uses this view; a report or bookmark elsewhere in the org I cannot rule out from here").
70
+ Asked-for removals that are NOT happening belong here too, with the reason and whose call it
71
+ was β€” a removal the operator expects and doesn't see is as alarming as the reverse.
72
+
73
+ ### πŸ”€ Where this differs from the requirements as written
74
+
75
+ Every deviation cites the operator answer that caused it ("per your Q3 answer"). Three shapes
76
+ belong here: requirements that GREW beyond their text, contradictions resolved *against* one
77
+ requirement's text, and acceptance criteria that will not be met. This is the block that keeps
78
+ a clarification round from silently rewriting the contract β€” the operator re-sees what their
79
+ answers did before approving the result.
80
+
81
+ ### πŸ“‹ Handed to you as manual tasks
82
+
83
+ Each with the reason it is manual ("both live on your admin Profile, and deploying that Profile
84
+ from here risks overwriting settings this batch has nothing to do with").
85
+
86
+ ### πŸ€” Judgment calls you're approving
87
+
88
+ The assumptions, artifact-first, in operator language. Not a restatement of every `plan.json`
89
+ assumption β€” the ones an operator would want to have known they agreed to.
90
+
91
+ ### Safeguards footer
92
+
93
+ One line: validate-before-apply, read-back-after, a refused step applies nothing. Rehearsal
94
+ note when a removal exists.
95
+
96
+ ---
97
+
98
+ ## Layout 1 β€” Grouped table (RECOMMENDED DEFAULT)
99
+
100
+ The table's rows are requirements; the table's GROUPS are org targets. Each object/area gets a
101
+ header line carrying its one-sentence org-delta summary, then `Req | What lands here` rows
102
+ beneath. A requirement whose pieces land in two groups appears in each with the relevant
103
+ slice and a pointer ("its queue & group land below ↓") β€” nothing double-counted, nothing
104
+ hidden. A single-object batch collapses gracefully to one group.
105
+
106
+ Choose when: most batches. It keeps per-requirement accountability ("did you hear all of me" is
107
+ answerable by inspection), gains org locality (everything touching one object is contiguous),
108
+ and inline signals make exceptions pop without adding a low-information column.
109
+
110
+ ### Worked example β€” the CF80 batch (15 reqs, 25 components, real session)
111
+
112
+ > ## πŸ“‹ Scope of this delivery β€” before you approve
113
+ > **15 requirements β†’ 25 new components Β· 2 new objects Β· 4 verified steps Β· nothing deleted Β·
114
+ > 2 manual tasks Β· 1 requirement covered by another's work**
115
+ >
116
+ > ### πŸ“¦ CF80 Intake Request β€” *new object Β· 8 fields Β· 4 automations Β· full page/access set Β·
117
+ > ships **Private**, not Public-as-written πŸ”€*
118
+ >
119
+ > | Req | What lands here |
120
+ > |---|---|
121
+ > | 3A | πŸ”€ the object itself β€” **Private sharing per your answer**, not Public Read/Write as written |
122
+ > | 3B | 6 core fields: email Β· status *(6 values, default New)* Β· category Β· due date Β· value Β· notes |
123
+ > | 3C | reason picklist, values filtered by category |
124
+ > | 3D | days-remaining SLA formula + help text on the core fields |
125
+ > | 3E | page layout + compact layout |
126
+ > | 3F | validation: due date required once Assigned |
127
+ > | 3G | *Open Intake Requests* list view |
128
+ > | 3H | tab |
129
+ > | 3I | *Intake Request User* permission set |
130
+ > | 3J | follow-up task flow |
131
+ > | 4A | escalation flow: overdue high-value β†’ Triage queue |
132
+ > | 4C | πŸ”€ owner-based sharing rule + High-Value approval *(its queue & group land below ↓)* |
133
+ >
134
+ > ### πŸ“¦ IN80 Test Console β€” *new object, labels corrected "in78"β†’"in80" πŸ”€*
135
+ >
136
+ > | Req | What lands here |
137
+ > |---|---|
138
+ > | T1 | πŸ”€ the object + Priority picklist with **labels corrected to β€œin80”** (High/Medium/Low) |
139
+ > | T2 | 🀝 **Covered** β€” the unnamed picklist is T1's Priority field; nothing extra built |
140
+ >
141
+ > ### 🌐 Org-wide β€” *1 new app Β· 1 queue Β· 1 group Β· 2 manual tasks for you πŸ“‹*
142
+ >
143
+ > | Req | What lands here |
144
+ > |---|---|
145
+ > | 4B | πŸ”€ *Operations Console* app + utility bar with History + Notes; **CTI dropped because none is configured** Β· πŸ“‹ app visibility and tab default become manual tasks |
146
+ > | 4C | *Intake Triage* queue + *Intake Managers* group |
147
+ >
148
+ > ### πŸ”€ Where this differs from the requirements as written
149
+ > - **CF80 Intake Request ships Private, not Public Read/Write.** Two of your requirements
150
+ > collided: 3A pins the object Public Read/Write, 4C needs an owner-based sharing rule
151
+ > Salesforce refuses on a Public Read/Write object. You picked the rule, so 3A's sharing line
152
+ > is deliberately not honored as written β€” that one answer reshaped both requirements.
153
+ > - **IN80 Test Console's labels ship corrected** ("in80", not the "in78" in the text) β€” a
154
+ > leftover from the source this was copied from, fixed on your instruction.
155
+ > - **The utility bar drops "Open CTI softphone"** β€” no CTI is configured in this org; History +
156
+ > Notes ship.
157
+ >
158
+ > ### πŸ“‹ Handed to you as manual tasks
159
+ > - **App visibility and tab default for System Administrator** β€” both live on your admin
160
+ > Profile, and deploying that Profile from here risks overwriting settings this batch has
161
+ > nothing to do with. Two Campfire tasks instead, per your answer.
162
+ >
163
+ > ### πŸ€” Judgment calls you're approving
164
+ > - **Request Status** and the other picklists: labels, restricted value sets, and ordering
165
+ > mirror your delivered CF79 twin where the text is silent; default status is **New**.
166
+ > - **Formula and help text wording** follows this object family's house style.
167
+ >
168
+ > **Safeguards:** 4 dependency-ordered steps, each validated before applying, every setting
169
+ > read back after; a refused step applies nothing.
170
+
171
+ ## Layout 2 β€” Flat table + thematic blocks
172
+
173
+ One requirement per row (`Req | You asked for | What will happen`), then the mandatory
174
+ blocks. No grouping.
175
+
176
+ Choose when: requirements are many but org targets are few, and the RISKS dominate the story β€”
177
+ the gathered blocks let the operator audit just the dangerous parts in three glances, and a
178
+ one-object batch gains nothing from group headers.
179
+
180
+ ### Worked example β€” the RV batch (4 reqs, deletion-heavy, partial delivery, real session)
181
+
182
+ > ## πŸ“‹ Scope of this delivery β€” before you approve
183
+ > **4 requirements β†’ 5 additions to PV Asset Β· 1 removal (rehearsed first) Β· 2 asked-for
184
+ > removals not happening, on your instruction Β· 3 build steps + 1 removal step**
185
+ >
186
+ > | Req | You asked for | What will happen |
187
+ > |---|---|---|
188
+ > | RV-01 | Audit date stamp + no-future rule | βž• date field + validation rule + **page placement you added** πŸ”€ |
189
+ > | RV-02 | Freshness flag, stale after 365 days | βž• formula checkbox; **blank counts as stale** πŸ”€ |
190
+ > | RV-03 | Delete field, rule, list view | ⚠️ **only the list view goes; field + rule stay** |
191
+ > | RV-04 | Surface the flag read-only | βž• layout + permission set updated |
192
+ >
193
+ > ### ⚠️ Removals
194
+ > **The *Active High Value* list view is the only thing being removed.** I'll rehearse the
195
+ > removal with the org first β€” a validation pass that changes nothing β€” then remove it for
196
+ > real. One honest limit: I can prove nothing *in this batch* uses this view; a report or
197
+ > bookmark elsewhere in the org I cannot rule out from here.
198
+ >
199
+ > **The audit date field and its rule were asked for gone, and they're staying.** RV-03 wants
200
+ > all three retired, but RV-02's freshness flag is *calculated from* the audit date β€” deleting
201
+ > it would break the thing this same batch builds. You chose to keep them, so RV-03 delivers
202
+ > partially and gets recorded that way, reason on the record.
203
+ >
204
+ > ### πŸ”€ Where this differs from the requirements as written
205
+ > - **PV Last Audit (the new field)** ends up on the page with edit access β€” as written, RV-01
206
+ > left it invisible to every user. That's your Q3 answer, and it's the one place this batch
207
+ > *grew* beyond its text.
208
+ > - **PV Audit Stale (the formula)** treats a never-audited asset as stale β€” the requirement
209
+ > only defined assets that *have* been audited. Your Q2 answer filled the gap.
210
+ > - **RV-03's acceptance criteria will not be met** β€” it says none of the three should exist
211
+ > afterwards; one removal ships.
212
+ >
213
+ > ### πŸ€” Judgment calls you're approving
214
+ > - **PV Last Audit**: dated *today* saves β€” only strictly-future dates refuse. No field
215
+ > history, though this object tracks history elsewhere; the requirement didn't ask.
216
+ > - **PV Audit Stale**: literal 365 days, strict boundary β€” exactly 365 days ago reads *not*
217
+ > stale. Placed in *Asset Details*, right after *PV Risk Weighted Value*.
218
+ > - **PV Audit Date Not Future**: active the moment it lands.
219
+ >
220
+ > **Safeguards:** every step is validated by Salesforce before it applies, every setting read
221
+ > back after it lands, and a refused step changes nothing.
222
+
223
+ ## Choosing, in one breath
224
+
225
+ Default to **Layout 1**. Fall back to **Layout 2** when one or two org targets make grouping
226
+ pointless and the risk blocks are the story. Whichever you pick: the mandatory blocks are not
227
+ optional, the signals are the fixed five and sit beside the outcome they qualify, the header
228
+ scoreboard leads, and every deviation names the answer that caused it.
229
+
230
+ *An org-centric tree β€” artifacts first, deviations annotated at the point of impact β€” was the
231
+ third layout here and was dropped 2026-08-04: it renders the same content as Layout 2 while
232
+ scattering the deviations through the tree, so an approver auditing only the risky parts has to
233
+ read everything. Layout 2's gathered blocks are that layout done better.*