[Bug] Compiler loses __proto__ keys in object variable defaults
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 78/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- node.js, typescript
- Domaine
- backend
Piste de recherche
Commence par packages/compiler/src/ast-helpers.ts et examine extractDictExpression(), qui, selon l’issue, attribue les entrées du dictionnaire avec result[key] = value. Reproduis les cas signalés de __proto__ sous forme d’objet et de scalaire, et vérifie que le cas témoin constructor se comporte toujours comme prévu. Le travail est terminé lorsque la compilation conserve __proto__ comme propriété propre dans la sortie snake_case ; exécute la suite du compilateur pour vérifier l’absence de régressions.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Description
A quoted __proto__ dictionary key disappears from a mutable object default during compilation. With an object value, the compiler changes the default object's prototype instead of creating an own property. No parser, schema, lint, or compiler diagnostic is returned.
Steps to Reproduce
- Check out
salesforce/agentscriptatace15eb2dc75564fd9e214385ac045c539056770(currentmain). - Parse the source below with
@agentscript/parser, convert it withnew Dialect().parse(mappingNode, AgentforceSchema), and run the AgentforcedefaultRules()throughLintEnginewithagentforceSchemaContext. - Pass the parsed value to
compile()and inspect thepayloadentry inoutput.agent_version.state_variables, before any camelCase conversion.
Expected Behavior
The default has an own __proto__ property and serializes as:
{"__proto__":{"marker":"kept"},"normal":{"n":1}}
Actual Behavior
The default serializes as:
{"normal":{"n":1}}
Object.hasOwn(payload.default, '__proto__') is false, while Object.getPrototypeOf(payload.default).marker is "kept". A scalar value ("__proto__": "kept") is also lost. A "constructor": {"marker": "kept"} control retains its own key and value.
Environment
- Node.js: 22.20.0
- pnpm: 10.34.6
- OS: macOS 27.0.1, arm64
- Package:
@agentscript/compiler, source checkout at the commit above - Parser: default JavaScript backend
Minimal Reproduction
config:
agent_name: "TestBot"
agent_type: "AgentforceServiceAgent"
access:
default_agent_user: "[email protected]"
variables:
payload: mutable object = {"__proto__": {"marker": "kept"}, "normal": {"n": 1}}
start_agent main:
description: "Test"
reasoning:
instructions: ->
| {[email protected]}
Additional Context
extractDictExpression() in packages/compiler/src/ast-helpers.ts assigns entries with result[key] = value on an ordinary object. For __proto__, that invokes the inherited setter. This is a different path from #88/#89: the loss is already present in the snake_case output of compile(), without calling snakeKeysToCamel. The dictionaries here are nonempty, so this also differs from #101's empty-dictionary loss.
Reproduced offline with assertions on object/scalar __proto__ values and the constructor control. The existing compiler suite passed (1,113 passed, 3 skipped), and the required TypeScript package builds passed. The standard dependency build was blocked by the missing tree-sitter CLI; no native-parser or full monorepo checks were run. No fix is included.
- Langage dominant
- TypeScript
- Étoiles
- 272
- Forks
- 55
- Merge moyen
- 12 h 18 min
- PR mergées (30 j)
- 5
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de salesforce/agentscript
-
Difficulté 2/5 1-3 heures Accessibilité débutants 80/100
salesforce/agentscript#103 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
salesforce/agentscript#101 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 61/100
salesforce/agentscript#85 ·
Les mainteneurs répondent en général sous 1 jour
-
README Quick Start fails on macOS: Node 26 incompatibility and missing tree-sitter CLI prerequisitePeut-être à nouveau libre @dsorajisto l’a pris il y a 167 jours, et aucune pull request n’est ouverte. Ouverte
Difficulté 2/5 Une demi-journée Accessibilité débutants 75/100
salesforce/agentscript#33 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 3/5 1-2 jours Accessibilité débutants 72/100
salesforce/agentscript#99 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de salesforce/agentscript
Issues similaires
-
category::task code priority::normal
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
e0ipso/strikethroo#145 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 1-3 heures Accessibilité débutants 85/100
cocos/cocos-docs#3333 ·
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
RevenueCat/react-native-purchases#2079 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
RevenueCat/purchases-hybrid-common#2039 ·
Les mainteneurs répondent en général sous 1 jour
-
agent-reported area/react bug
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 1 jour